SMTP認証(SMTP-Auth)¶
- PostfixのSMTP認証に関するページです。
- SMTPサーバの接続に認証を設けることで、不正なメールの送信や
 不正なメールの踏み台送信を防ぐことが出来ます。
- 実装には幾つかの方法がありますが、今回は簡単なOSアカウントとの
 連携(pam-unix)を利用して実装します。
前提条件¶
- このソフトウェアの構築には下記の導入が前提となります。
	- Postfix は構築済みとします。
- Cyrus-SASL2
 
インストール¶
- yumまたはrpmコマンドで適宜インストールを行います。# yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 
設定ファイル編集¶
- 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 
- サービスの設定・再起動を行います# service postfix restart 
OSユーザとの連携¶
- OSユーザとの連携を指定するvi /etc/sysconfig/saslauthd ------------------------------ # Mechanism to use when checking passwords. Run "saslauthd -v" to get a list # of which mechanism your installation was compiled with the ablity to use. #MECH=pam MECH=shadow 
- サービスの設定・再起動を行います# systemctl enable --now saslauthd 
- 簡易動作確認# testsaslauthd -u OSユーザ名 -p パスワード 0: OK "Success." 
動作確認¶
- 準備として「メールアドレス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 
- 認証に成功することを確認
¶
¶