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.