|
||
|
SMTP-AUTHを使って上位メールサーバへ転送する他のパターンはPostfixでメールサーバを構築する(解説)も参照してください。インターネットへメールを自由に送信するのも規制がかかっています。 不正中継対策として、OB25Pを採用しているISPも多いです。 あるいは独自ドメインのメールを、ISPサーバを経由して送らねばならないこともあります。 そのため、SMTP-AUTHで送信元の身元を確認します。 この場合は、PostfixをSMTP-AUTHクライアントとして、ISPメールサーバへパスワードを送って認証します。 条件 ISPのサーバが不正中継対策として、OB25PやSMTP-AUTHを採用している場合。 PostfixサーバにSMTP-AUTHに使用するユーザIDとパスワードを設定しておきます。 その他の点は「上位メールサーバへ一律転送するメールサーバ」と共通です。 ※「上位メールサーバへ一律転送するメールサーバ」までの設定が終了しているものとします。 ・Cyrusをインストールする ・Postfixを設定する ・SMTP-AUTHで使用するパスワードを記述する ・Telnetでメールの転送を確かめる CyrusをインストールするまずはPostfixにSMTP-AUTHクライアントとしてCyrusをインストールします。#yum install cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain としてインストールします。リポジトリへ接続できることが条件です。 Postfixを設定するPostfixにsaslを使用することを伝えます。ISPのSMTP-AUTHではポート587番が採用されていることが多いです。 main.cfのrelayhostを以下のように編集します。ポート番号も付加します。 通常のメールサーバとは異なり、認証用のSMTPサーバを指定するISPもあります。 relayhost = [auth.hogehoge.net]:578 末尾にSMTP-AUTHのための設定を追加します。 MD5認証を採用しているISPの場合 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/smtp-auth-passwd smtp_sasl_mechanism_filter = cram-md5, plain, login 上から順に sasl-authを有効 SMTP-AUTHに使うユーザ名とパスワードを指定するファイル。ファイル名は何でもいいです。 SMTP-AUTHの認証方法を試す順番 ですが、このMD5認証がクセ者です。 MD5認証はちょっと複雑なため、一部のメールソフトは実装していません。 そのためISP側もユーザサポートが面倒になるので、初めからMD5を使用せずplaintextで運用していることが多いです。 MD5認証を採用していないISPの場合 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/smtp-auth-passwd smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain, login smtp_sasl_security_optionsはデフォルトで「noanonymous,noplaintext」なので、plaintextの使用を禁止しています。 まずnoplaintextを記述しないことで、plaintextの使用を許可します。 そして認証方式の順番に、MD5を含めていません。 SMTP-AUTHで使用するパスワードを記述するsmtp_sasl_password_maps で記述したファイルを作成します。中にSMTP-AUTHで使用するユーザIDとパスワードを記述します。 #vi smtp-auth-passwd [auth.hogehoge.net]:587 user:passwdxxx ハッシュ化することで、Postfixが読み込めるように変換します。 #postmap smtp-auth-passwd Postfixを再起動して設定情報を読み込ませます。大きく設定した場合はreloadではダメな場合があります。 #service postfix restart 必ず、ハッシュ化してから再読み込みさせましょう。 起動させた後でパスワードをハッシュ化させても効果ありません。 Telnetでメールの転送を確かめるTelnetでSMTPの挙動を確認します。メールサーバ上でメールのログを監視します。 #tail -f /var/log/maillog 「telnet localhost 25」として直接SMTPサービスにログインし、SMTPコマンドを実行します。 太字部分が入力内容です。 宛先のメールは、外部のインターネットメールを使用します。 220 localhost.localdomain ESMTP Postfix helo localhost 250 localhost.localdomain mail from: user1@example.local 250 2.1.0 Ok rcpt to: user@hogehoge.net 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> helo postfix . 250 2.0.0 Ok: queued as 0625633CC90 quit 221 2.0.0 Bye tailで監視している/var/log/maillogの内容で Jan 29 19:28:37 localhost postfix/smtp[3587]: 364CB33CC90: to=<user@hogehoge.net>, relay=auth.hogehoge.net[xxx.xxx.xxx.xxx]:587, delay=0.5, delays=0.39/0/0.06/0.05, dsn=2.0.0, status=sent (250 2.0.0 x0eCtqSy011047 Message accepted for delivery) という内容が出れば成功です。 認証が失敗する、という類のエラーが出るときはパスワードファイルの記述に細かいミスがないか確認し、リロードします。 あるいはmain.cfの認証方式のオプションでつづり間違いをしている可能性もあります。 認証が実行されない場合は、ISPの認証方式と認証サーバ名、main.cfの認証方式の指定などを確認しましょう。 |
|