Quantcast
Channel: 複眼中心 » mail
Viewing all articles
Browse latest Browse all 10

Oracle Linux 6.2 の Postfix 2.6.6 にSMTP認証を設定

$
0
0

Oracle Linux 6.2 にメール・サーバーを構築する第2章。Postfix は Cyrus SASL を使うことでSMTP認証を実現している。Cyrus SASL はいろいろな認証方法をサポートしているが、CRAM-MD5などの暗号化された方法はテレビなどの家電や Outlook Express などの古いメーラーが対応していないことが多いので、平文パスワードを使用するPLAIN (LOGIN) 認証をまずは設定する。ただし、平文パスワードをインターネットでそのまま使用するのは危険なので、経路を暗号化する SMTP over SSL/TLS を合わせて使用することにする。この記事では Oracle Linux 6.2 でSMTP認証を設定する方法を記載するが、Red Hat Enterprise Linux (RHEL) / CentOS / Scientific Linux でも同様だろう。SMTP over SSL/TLS の設定方法については別記事で扱う。

まずは Cyrus SASL をインストールしよう。PLAIN認証しか使用しないのであればcyrus-sasl-plainパッケージだけで良い。

[root@zulu ~]# yum install cyrus-sasl-plain
......
================================================================================
 Package                Arch         Version              Repository       Size
================================================================================
Installing:
 cyrus-sasl-plain       x86_64       2.1.23-13.el6        ol6_latest       30 k
......

パスワードの保存方法には /etc/sasldb2 を使った独自方式とPAM認証を使ったOSユーザーのパスワードと共通にする方法がある。今回はシングル・サインオンを目指してPAM認証を使用する。PAM認証を使用するsaslauthdサービスを起動する。

[root@zulu ~]# service saslauthd start
saslauthd を起動中:                                        [  OK  ]
[root@zulu ~]# chkconfig saslauthd on

SMTP認証に関する設定をPostfixの /etc/postfix/main.cf に追加する。この設定で匿名でのログインを拒否し (noanonymous) 、SASL認証された場合 (permit_sasl_authenticated) または$mynetworksからの接続 (permit_mynetworks) は許可し、$mydestination 宛てでない接続 (reject_unauth_destination) は拒否するようになる。

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination

設定ファイルを再読み込みし、TelnetからSMTPコマンドを直接実行して動作確認してみよう。以下ではLAN内のMacからGmailにメールを送信しており、EHLOコマンドを送信するとAUTHコマンドが応答されていることが分かる。送信するパスワードは username\0username\0password というフォーマットでMIMEエンコードする必要があるので、Perlで事前に作成している。

[root@zulu ~]# service postfix reload
postfix を再読み込み中:                                    [  OK  ]

[root@evian ~]# perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'
dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
[root@evian ~]# telnet zulu.rewse.jp 25
Trying 192.168.1.120...
Connected to zulu.rewse.jp.
Escape character is '^]'.
220 zulu.rewse.jp ESMTP Postfix
EHLO evian.rewse.jp
250-zulu.rewse.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
235 2.7.0 Authentication successful
MAIL FROM: foo@rewse.jp
250 2.1.0 Ok
RCPT TO: example@gmail.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Test
To: rewselab@gmail.com

This is a test mail.
.
250 2.0.0 Ok: queued as 4F12D557
QUIT
221 2.0.0 Bye
Connection closed by foreign host.


Viewing all articles
Browse latest Browse all 10

Trending Articles