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
- 認証に成功することを確認
¶
¶