SMTP AUTH + Postfix (sasldb2認証)

PostfixによるSMTP Authentication(SMTP AUTH)の設定方法です。
SMTP AUTHにはSASL(Simple Authentication and Security Layer-RFC2222)が必要です。PostfixでSASLを利用するにはCyrus SASLを使用します。
RHEL3ではPostfixおよびCyrus SASLがデフォルトでインストールされています。Postfixの再コンパイルは必要ありません。
バージョン

  • postfix-2.0.11-4 (RHEL3のデフォルトRPM)
  • cyrus-sasl-2.1.15-3

1. SMTP AUTHの認証設定
SMTP_AUTHを利用する場合にどのような認証の仕組みを使うのかを /usr/lib/sasl2/smtpd.conf ファイルに設定します。
SASLを利用すると様々な認証情報が利用できますが、ここではSASL標準の「sasldb2を利用した認証方法」を利用します。
/usr/lib/sasl2/smtpd.confファイルはデフォルトでは次のようになっています。
▼/usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd

このままでもCRAM-MD5認証とDIGEST MD5認証に対応していますが、LOGIN認証およびPLAIN認証にも対応させる場合には次のように設定します。
▼/usr/lib/sasl2/smtpd.conf

pwcheck_method: auxprop — (1)
auxprop_plugin: sasldb — (2)
mech_list: cram-md5 digest-md5 plain login — (3)

(1) 認証に何を利用するかを指定します。デフォルトはauxpropです。 auxprop以外にはsaslauthdがよく利用されます。
(2) 認証プラグインの指定です。デフォルトはsasldbです。mysqlなどのプラグインを指定することもできます。
(3) 利用可能な認証メカニズムをスペース区切りで記述します。

RHEL3のデフォルトでは、sasldb2の他にsasldbもありますが、sasldb2を使用します。

次にSMTP AUTHで使用するパスワードを作成します。
セキュリテイ面から、UNIXパスワードとは別のパスワードを使用することにします。
saslpasswd2コマンドを使用してパスワードを作成します。”-u”オプションにはpostfixで設定されているドメインを指定し、最後にユーザ名を指定します。
初回は何故か失敗するようですので再度繰り返します。二回目からは問題ありません。

# saslpasswd2 -c -u
Password: [パスワードを入力]
Again (for verification): [パスワードを再入力]
saslpasswd: generic failure
# saslpasswd2 -c -u sensaba.net smtpuser
Password: [パスワードを入力]
Again (for verification): [パスワードを再入力]

設定したパスワードを削除する場合は、以下のようにします。

# saslpasswd2 -d -u

設定されたパスワードを確認するには、以下のようにします。

# sasldblistusers2
smtpuser@sensaba.net: userPassword

/etc/sasldb2ファイルが作成されますが、パーミッションは600になっていますので、Postfixがsasldbを利用できるようにグループに登録し、パーミッションを変更します。

# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2

2. Postfixの設定
main.cfファイルに次の内容を追加します。
▼/etc/postfix/main.cf


# SMTP AUTH parameters.
smtpd_sasl_auth_enable = yes — (1)
smtpd_sasl_local_domain = $mydomain — (2)
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains, reject — (3)
smtpd_sasl_security_options = noanonymous noplaintext — (4)
broken_sasl_auth_clients = yes —(5)

(1) SASLによるSMTP認証を使用。
(2) SMTP認証するlocal domainの指定。
ここでの設定と、myoriginの設定とsaslpasswdの設定時のmydomainの設定の3個所が同一でないとエラーになるので注意が必要です。
(3) リレーを許可するものを設定。
・permit_mynetworks : mynetworksで指定されたネットワークからのリレーを許可。
・permit_sasl_authenticated : SMTP AUTHによって認証されたクライアントからのリレーを許可。
・reject_unauth_destination : 以下のパラメータに設定されているアドレス宛てのメールかどうかをチェックし、それ以外は拒否。
    $mydestination
    $inet_interfaces
    $virtual_alias_domains
    $virtual_mailbox_domains
    $relay_domains
(4) noanonymous : 匿名での接続を拒否。
noplaintext : PLAIN認証を拒否(Outlook ExpressはPLAIN認証のみ対応のため記述しません。)
(5) AUTHコマンドのサポートを認識できないクライアントへの対応。
Outlook Express 4 および Exchange 5等はAUTH コマンドをサポートしていることを認識できないので、 使用時は設定を追加します。
設定が終了したらPostfixを再起動します。

# service postfix restart