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]
 
											