■PostfixのSMTP認証
各組織のローカルネットワークからのみメールが送信 できるように設定するのが一般的ですが外部からも送信できたほうが便利です。但し、無条件に外部から送信できてしまうとこれを悪用されることがありSPAMメールの踏み台とされてしまいます。これを回避するため外部からのメール発信には必ず一度認証を通す必要があるよう設定します。これをSMTP認証と呼びます。ここではSMTP認証に使用するアカウントはUNIXアカウントを使用します。
必要なソフトがインストールされていなければyumからインストールします。
# yum install cyrus-sasl cyrus-sasl-plain # rpm -qa | grep cyrus cyrus-sasl-2.1.26-17.el7.x86_64 cyrus-sasl-md5-2.1.26-17.el7.x86_64 cyrus-sasl-scram-2.1.26-17.el7.x86_64 cyrus-sasl-gssapi-2.1.26-17.el7.x86_64 cyrus-sasl-lib-2.1.26-17.el7.x86_64 cyrus-sasl-plain-2.1.26-17.el7.x86_64 |
UNIXアカウントを認証に使用する場合は以下の ファイルを編集する必要があります。
# vi /etc/sysconfig/saslauthd #MECH=pam MECH=shadow |
そしてpostfix側の設定を変更します。以下、編集部分のみ記載します。
# vi /etc/postfix/main.cf # smtpd_recipient_restrictions = permit_mynetworks, # reject_unauth_destination smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, ※SMTP認証を行ったクライアントは許可 reject_unauth_destination # SASL認証を有効化する smtpd_sasl_auth_enable = yes # mynetworks以外で匿名での接続を拒否する smtpd_sasl_security_options = noanonymous # 規格外の動作に対応させる broken_sasl_auth_clients = yes |
サブミッションポート( TCP/587 )をオープンにしておき、これを経由する際はSMTP Authを必須とします。下記の編集の実際はコメントアウトです。
# vi /etc/postfix/master.cf submission inet n - n - - smtpd # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject |
ここまでで設定は完了なのでPostfixをリロー ドします。
# systemctl restart postfix.service |
次にSASLを有効にして起動します。
# systemctl enable saslauthd.service # systemctl start saslauthd.service |
コマンドラインから動作確認を行います。Cyrusにtestsaslauthdコマンドというのが用意されていますのでこれを利用します。
# testsaslauthd -u test -p password 0: OK "Success." |
上記のように「OK “Success.”」と表示されれば認証は成功しています。さらにPostfixでSMTP認証が正常に機能しているのか下記のコマンドから確認可能です。
# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.unix-power.net ESMTP Postfix EHLO unix-power.net 250-mail.unix-power.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH LOGIN 334 VXNlcm5hbWU6 |
上記のAUTH LOGINを発行した際にエラーが出なければOKです。