CentOS 4.4 の Postfix 2.2.10 にSMTP認証を設定

CentOS 4.4 で メール・サーバーを構築する第四章。Postfixは Cyrus SASL を外部アプリとして使うことでSMTP認証を可能としてる。Cyrus SASL はいろいろな認証方法をサポートしているが、CRAM-MD5などの暗号化した方法は(誰かが使うかもしれない)Outlook Express が対応していないので、平文パスワードを使用するPLAIN(LOGIN)認証を使用する。ただし、平文パスワードをインターネットで使用するのは危険なので、次回の記事で説明する SMTP over SSL/TLS も合わせて使用する。

まずは Cyrus SASL をyumからインストールしよう。今回はすでにcyrus-saslはインストール済みだったので、PLAIN認証を使用できるようにするcyrus-sasl-plainだけ追加インストールする。

# yum install cyrus-sasl-plain
……
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
cyrus-sasl-plain i386 2.1.19-5.EL4 update 27 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 27 k
Is this ok [y/N]: y
……
Installed: cyrus-sasl-plain.i386 2.1.19-5.EL4

Complete!

パスワードの保存方法は /etc/sasldb2 を使った独自方式とPAM認証を使ってOSパスワードと共通にする方法がある。今回はパスワードの管理が面倒なのでPAM認証を使用する。

PAM認証を使用するには、saslauthdというサービスがPAM認証を行うように /etc/sysconfig/saslauthd に記述し、saslauthdを起動させる。

/etc/sysconfig/saslauthd

SOCKETDIR=/var/run/saslauthd
# MECH=shadow
MECH=pam
FLAGS=

# service saslauthd start
saslauthd を起動中: [ OK ]
# chkconfig saslauthd on

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

/etc/postfix/main.cf

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

設定ファイルの再読み込み後にTelnetでPostfixに接続し、動作確認してみよう。EHLOコマンドを送信すると、AUTHコマンドが使えることが応答される。なお、パスワードはMIMEエンコードして送信する必要があるため、事前にPerlで作成しておこう。

# service postfix reload
Reloading postfix: [ OK ]
$ perl -MMIME::Base64 -e ‘print encode_base64(“username\0username\0password“);’
dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
$ telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 zulu.rewse.jp ESMTP Postfix
EHLO localhost
250-zulu.rewse.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250 8BITMIME
AUTH PLAIN dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
235 Authentication successful
MAIL FROM: foo@zulu.rewse.jp
250 Ok
RCPT TO: bar@zulu.rewse.jp
250 Ok
DATA
354 End data with <CR><LF>. <CR><LF>
Subject: Test
To: bar@zulu.rewse.jp

This is a test mail.
.
250 Ok: queued as A2CB95849
QUIT
221 Bye
Connection closed by foreign host.
$ less /home/bar/Maildir/new/*

<

p>以上でPostfixのSMTP認証の設定は完了である。

2 thoughts on “CentOS 4.4 の Postfix 2.2.10 にSMTP認証を設定”

  1. Pingback: 複眼中心

コメントを残す