Postfixの認証設定
Postfixの認証設定なんですが、どうすべきかわかりにくかったので、ここにまとめておきます。
しかし、どういうわけか、変な試行錯誤をしてしまって、おかしな設定に落ち着いてしまってるユーザを、よく見かけます。
http://d.hatena.ne.jp/obache/20080812/1218590863
とういうことなので、以下の設定とか認識も間違いがあればご指摘いただければ幸いです。
- 今回使ってるパッケージのバージョン
- postfix 2.6.6
- cyrus-sasl 2.1.23
どういう状態にするか
SASLの設定
- 導入するパッケージ
- cyrus-sasl
- cyrus-sasl-devel
- cyrus-sasl-lib
- cyrus-sasl-plain
パッケージは必要な認証機構に合わせて導入する。平文で十分ならPLAINとか、パスワードを暗号化するならCRAM-MD5とか。
わけがわからないからと、全部入れてしまっては、また混乱してしまいます。なぜなら、インストールされたプラグインは、すべて自動的に認識されるのですが、インストールしたものについては、それなりの設定をしてやらねばらなず、また、思いがけない認証が有効になってしまっていて、セキュリティ上の穴が発生してしまうかもしれないからです。
http://d.hatena.ne.jp/obache/20080812/1218590863
ということで、不要なパッケージは入れない方が良い。
- /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd mech_list: plain
PLAIN認証を使うので、pwcheck_method では saslauthd を選択。で、mech_list では使用する認証方法に plain を選択。
- /etc/sysconfig/saslauthd
#MECH=pam MECH=shadow
saslauthdの設定。認証メカニズムはデフォルトでpamなので、shadowにする。
この辺、規模の小さいメールシステムだったらこれでよい気がするけど、管理するユーザ数が増えてくるなら、別の認証機構、メカニズムを選択した方が良さそう。
- /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes smtpd_sasl_type = cyrus
続いてpostfix側の設定。saslを有効化して、使用するパッケージとしてcyrusを指定。
設定はここまで。このあとsaslauthdとpostfixを起動してやる。
メーラー上は以下の設定にするとメールが送れる。
ただしこの状態だと、パスワードが平文*1でネットワークを流れるのでよろしくない。
テスト時にはOSのパスワードを一時的に変えておいた方がよろしいかと存じます。
SSLの設定
- SSL証明書の作成
今回はオレオレ証明書で。
Dovecotを構築しててもう作ってあるなら、それを使えばよい。
なければOpenSSLで作る。
手順はコチラをご参照。
OpenSSL でオレオレ証明書を手っ取り早く作成する方法 - WebOS Goodies
出来たものは適当に配置。
- /etc/postfix/main.cf
smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/tls/certs/mail-server.crt smtpd_tls_key_file = /etc/pki/tls/private/mail-server.key
TLSを有効にして、証明書の場所を指定。
ちなみにここまでの設定だと、STARTTLSで動く。
SMTP over SSL でセッションの最初からSSL通信を行うには、続いて以下の設定を行う。
- /etc/postfix/master.cf
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
コメントアウトを外すだけと思いますが、上から、
-
- smtpsでの通信を有効にする
- Outlook Express, Outlook用の設定、詳細は知らない
- SASL認証を有効化
- SASL認証出来るクライアントからの接続を許可、他は拒否
設定はここまで。
reloadしてやると、メーラー上からは以下の設定でしかメールが送れなくなってるはず。
手元のThunderbirdだと、接続の保護:なしの際には、認証方式で平文のパスワードを選ぶと(安全でない)との表記がついてたけど、SSL/TLSにするとそれが消えた。
うまくいかなかったら
サーバのメールログを見るべし。デフォルトだと /var/log/maillog 。大抵エラーの理由が書いてあるし、わからなければそれでググれば解決するよ。