Last Updated on 2022年3月13日 by かんりにん
[pukiwiki]
&topicpath;
**▼SMTP-auth設定 [#e44ccef9]
(会社編)
※自宅サーバ編は別途編集。
postfix+cyrus-SASLの組み合わせでのSMTP-authの実装です…が、いろいろあって検証環境ではまだ途中です
(本番環境ではすぐいけそうな感じだけど、重要インフラなので気をつけて…)
※当初cyrus-SASLをソースコンパイルしたものを使用するつもりでしたが、いまいち動作がおかしい(コンパイル時のオプションがおかしい?)ので
おとなしくRPMパッケージで設定しました。
**1)cyrus-SASLのインストール確認 [#r2d7d4bc]
RPM版でインストールを完了しているのでそのまま使用する。
▼saslデータベース
sasl認証のパスワードファイル。
sasldb :/etc/sasldb
確認コマンド # strings /etc/sasldb
▼パスワードファイルの設定
Postfixがsasldbを利用できるようにグループに登録し、
パーミッションを変更します。
# chgrp postfix /etc/sasldb
# chmod 640 /etc/sasldb
▼saslパスワード登録コマンド
パスワード登録 saslpasswd :/usr/sbin/saslpasswd
パスワード確認 sasldblistusers :/usr/sbin/sasldblistusers
▼パスワードファイルの設定
Postfixがsasldbを利用できるようにグループに登録し、
パーミッションを変更します。
# chgrp postfix /etc/sasldb
# chmod 640 /etc/sasldb
**2)postfixの再コンパイル [#r5cab32c]
$ cd /usr/local/src/postfix-2.0.16/
$ make tidy ←注
以前にインストールしたソースディレクトリで作業を行う場合に必要です。
$ make makefiles CCARGS=”-DUSE_SASL_AUTH -I/usr/include” \
AUXLIBS=”-L/usr/lib -lsasl”
$ make
$ su
# make install
▼main.cfの編集
変更箇所は以下の項目
main.cfの最後のあたりへ追記する。
# Other configurable parameters.
smtpd_sasl_auth_enable = yes ←SMTP Authの利用を許可する
smtpd_sasl_local_domain = $mydomain ←SMTP認証するlocal domainの指定。
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,\
check_relay_domains, reject
smtpd_sasl_security_options = noanonymous ←anonymous接続を拒否する
broken_sasl_auth_clients = yes ←OutlookExpressから利用する
※注意
mynetworkディレクティブによって認証なしで送信を許可するネットワークを
指定する。
社内のIPが指定されていることを必ず確認すること。
▼main.cfの書式チェック
書式チェック
# postfix check
エラーがなければ、プロンプトが戻ってくる。
▼postfix再起動
# postfix start あるいは reload
**3)送受信確認 [#q3f46ef9]
コンパイルに成功したら、コマンドプロンプトから
telnetでポートを指定して確認する。
$ telnet localhost 25 <-- 入力し、エンター Trying 127.0.0.1... Connected to localhost. 220 example ESMTP Postfix EHLO localhost <-- EHLO localhostと入力 250-mail.example.com 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 <-- この行があればOK※ 250 8BITMIME QUIT <-- 確認できたので、QUITコマンドで切断します ※上記と同じメッセージが出力されない場合は saslの認証に失敗しているので、saslのパスワード登録をやり直し!! ''【AUTH PLAINが出ない場合の対処法】'' 参照元にさせてもらいました↓ [[http://www.kobitosan.net/postfix/ML/arc.3/msg00641.html]] 以下の2つの対処法のうちどちらか、あるいは両方をためして 再度telnetで出力結果を確認。 ***対処1: [#k90eb0ea] postconfをたたいて、smtpd_sasl_security_optionsが''noplaintext''に なっているか確認。 ※postconfは、main.cfを読み込んでコンフィグを一覧するコマンド。 [root@example postfix]# postconf | grep smtpd_sasl_security_options smtpd_sasl_security_options = noplaintext, noanonymous [root@example postfix]# この場合、smtpd_sasl_security_optionsからnoplaintextを削除する。 [root@example postfix]# postconf -e smtpd_sasl_security_option=noanonymous とし、noanonymousだけを指定する。 再度確認して消えていればOK。 [root@example postfix]# postconf | grep smtpd_sasl_security_options smtpd_sasl_security_options = noanonymous [root@example postfix]# ***対処2: [#y62edc22] smtpd.confにmech_list: GSSAPI DIGEST-MD5 CRAM-MD5 と手動設定されていないか この場合は/usr/lib/sasl/smtpd.confを以下のように編集すればOK。 pwcheck_method:sasldb mech_list: LOGIN PLAIN GSSAPI DIGEST-MD5 CRAM-MD5 設定が完了したら、出力確認 [root@example postfix]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.example.com ESMTP Postfix EHLO localhost ←リクエストを入力 250-mail.example.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI ←出力されました! 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI ←出力されました! 250 8BITMIME QUIT ←ログアウト 221 Bye Connection closed by foreign host. [root@example postfix]# ちなみにまだ本運用を開始していないので このページも完全ではありません。 [/pukiwiki]