SMTP認証(SMTP-Auth)¶
- PostfixのSMTP認証に関するページです。
- SMTPサーバの接続に認証を設けることで、不正なメールの送信や
不正なメールの踏み台送信を防ぐことが出来ます。
- 実装には幾つかの方法がありますが、今回は簡単なOSアカウントとの
連携(pam-unix)を利用して実装します。
前提条件¶
- このソフトウェアの構築には下記の導入が前提となります。
- Postfix は構築済みとします。
- Cyrus-SASL2
インストール¶
- yumまたはrpmコマンドで適宜インストールを行います。
# yum install cyrus-sasl
設定ファイル編集¶
- 次の設定ファイルを編集します。
(初回で存在しない場合は作成する)# vi /etc/sasl2/smtpd.conf # ------------------------------------------------------ pwcheck_method: auxprop mech_list: plain login
- Postfix側にも設定を追記します。
# vi /etc/postfix/main.cf # ------------------------------------------------------ # 変更箇所のみ記載します。 # SMTP-Auth # SASL認証有効化 smtpd_sasl_auth_enable = yes # mynetworks以外で匿名での接続を拒否 smtpd_sasl_security_options = noanonymous # 規格外の動作に対応 broken_sasl_auth_clients = yes # RCPT TO コマンドの場面で適用するアクセス制限。SMTP_Authを利用したクラアントを許可 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/policy # Auth コマンドをサポートしないMTA(Outlook等)はサポートしない broken_sasl_auth_clients = yes
- Postfixのサービス設定も変更します。
saslの設定有効化と、アクセス制御を行います。
(認証成功した場合許可、それ以外は拒否)# vi /etc/postfix/main.cf # ------------------------------------------------------ # 変更箇所のみ記載します。 smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
- サービスの設定・再起動を行います
saslauthdの起動は不要# service postfix restart
ユーザの作成¶
- ユーザの作成
saslpasswd2 -c -u ドメイン名 ユーザ名 パスワードを入力する
- 初回のみ、パスワードDBファイルのオーナーと属性を変更する
chown postfix.postfix /etc/sasldb2 chmod 640 /etc/sasldb2
- 初回のみ、パスワードDBファイルのオーナーと属性を変更する
動作確認¶
- 準備として「メールアドレス2回パスワード1回」の文字列からハッシュを作成する
printf "%s\0%s\0%s" メールアドレス メールアドレス パスワード | openssl base64 -e | tr -d '\n'; echo 出力された文字列をコピーしておく
- 他のマシンからtelnetで接続する
telnet IPアドレス 25(または587)
- HELOを入力
helo test
- 認証を発行する
AUTH PLAIN 先ほどコピーした文字列を貼り付ける 235 2.7.0 Authentication successful
- 認証に成功することを確認
¶
¶