プロバイダが GOLで、Submissionポートを使用しなければならないと思い、
main.cfに↓を追記しました。
relayhost = mail.gol.com:587
テスト方法は、LAN内のPCからPostfixサーバへtelnetでログインしてコマンド実行。
telnet 192.168.0.150 25
helo xxx.ddo.jp
250 xxx.ddo.jp
mail from:root@xxx.ddo.jp
250 2.1.0 Ok
rcpt to:user_1@hogehoge.co.jp
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:test from Debian root
9-12
.
250 2.0.0 Ok: queued as 65B5F8F4049
user_1@hogehoge.co.jp にメールが届きません。
ログには↓が出ています
Sep 12 18:34:55 localhost postfix/qmgr[5591]: 65B5F8F4049: from=<root@xxx.ddo.jp>, size=403, nrcpt=1 (queue active)
Sep 12 18:34:56 localhost postfix/smtp[5712]: 65B5F8F4049: to=<user_1@hogehoge.co.jp>, relay=mail.gol.com[203.216.5.
115]:587, delay=4962, delays=4962/0.02/0.07/0.1, dsn=5.0.0, status=bounced (host mail.gol.com[203.216.5.115] said: 550 r
elaying not permitted (in reply to RCPT TO command))
Sep 12 18:34:56 localhost postfix/cleanup[5714]: 1A8D58F404D: message-id=<20100912093456.1A8D58F404D@xxx.ddo.jp>
Sep 12 18:34:56 localhost postfix/bounce[5713]: 65B5F8F4049: sender non-delivery notification: 1A8D58F404D
アドバイスお願いします。
ちょっと混乱されているかも...
~# vi master.cf
submission inet n - - - - smtpd
# -o smtpd_tls_security_level=encrypt
- o smtpd_sasl_auth_enable=yes
これは、今構築している Postfix の MTA が、メーラや別の MTA から接続された時に、相手を SMTP-AUTH で認証する話で、今回は、この MTA が mail.gol.com:587 へ送ろうとした時に、SMTP-AUTH で認証してもらうためにはどうするか? ということになります。
つまり、この MTA が mail.gol.com に対してクライアント側に立ち、mail.gol.com へ「EHLO」を送ったり「AUTH CRAM-MD5」送ったりする話です。
なので、
下記の方法でSMTP-AUTHが効いていることも確認しました。
~# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxx.ddo.jp ESMTP Postfix (Debian/GNU)
ehlo localhost
250-xxx.ddo.jp
...
250-STARTTLS
250-AUTH CRAM-MD5 NTLM LOGIN DIGEST-MD5 PLAIN
250-ENHANCEDSTATUSCODES
これも、この Postfix の Submission ポートで SMTP-AUTH の認証を受け付けるようになっている、ということであって、今回の目的とは無関係の事を確認していることになります。
で、気になるのが、
~# vi /etc/postfix/sasl_passwd
[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx
relayhost は mail.gol.com:587 がなのに、マップファイルでわざわざ [] を付けたのが気になります。
Postfix は relayhost に指定された mail.gol.com:587 へ送る際に、smtp_sasl_auth_enable が有効になっているので、smtp_sasl_password_maps に指定されたマップファイルを検索して、SMTP-AUTH で送るためのユーザ名、パスワードを調べます。
この時、おそらく、この relayhost に指定されている文字列をそのまま使って、マップファイルを検索すると思います。つまり、
/usr/sbin/postmap -q 'mail.gol.com:587' hash:/etc/postfix/sasl_passwd
というのと同じことをしていると思います。
実際、「[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx」と記述してマップファイルを作っていると、上記のコマンドで結果は得られません。
ユーザ名とパスワードが得られなければ、認証情報を mail.gol.com へ送る事が出来ないわけですから SMTP-AUTH の認証処理は行われず、結果、mail.gol.com に中継を拒否される、という事が起きているのではないかと想像します。
> status=bounced (host mail.gol.com[203.216.5.115] said: 550 relaying not permitted (in reply to RCPT TO command))
ログを確認すると mail.gol.com が、550 のエラーコードを返していますね。
おそらく SASL認証の設定が、必要と思うのですが、設定されていますか?
Postfix で、このあたりの設定が、必要になると思います。
http://www.postfix-jp.info/trans-2.3/jhtml/SASL_README.html#clie...
ありがとうございます。
SASL認証の設定はしてませんでした。
OSは、Debian(lenny)なのですが、
http://pierre.xrea.jp/x/modules/pukiwiki/?Postfix%A4%CEsubmissio...
のサイトを参考に、↓のように設定しました。
~# vi main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
~# vi /etc/postfix/sasl_passwd
[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx
~# chmod 604 /etc/postfix/sasl_passwd
~# postmap /etc/postfix/sasl_passwd
~# vi master.cf
submission inet n - - - - smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
postfixを再起動
下記の方法でSMTP-AUTHが効いていることも確認しました。
~# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxx.ddo.jp ESMTP Postfix (Debian/GNU)
ehlo localhost
250-xxx.ddo.jp
...
250-STARTTLS
250-AUTH CRAM-MD5 NTLM LOGIN DIGEST-MD5 PLAIN
250-ENHANCEDSTATUSCODES
...
その後、user_1@hogehoge.co.jpへ同じく送信テストをしました
( telnet 192.168.0.150 25 )
が、550エラーとなりました。
未だ、必要な設定が有りますでしょうか?
ちょっと混乱されているかも...
~# vi master.cf
submission inet n - - - - smtpd
# -o smtpd_tls_security_level=encrypt
- o smtpd_sasl_auth_enable=yes
これは、今構築している Postfix の MTA が、メーラや別の MTA から接続された時に、相手を SMTP-AUTH で認証する話で、今回は、この MTA が mail.gol.com:587 へ送ろうとした時に、SMTP-AUTH で認証してもらうためにはどうするか? ということになります。
つまり、この MTA が mail.gol.com に対してクライアント側に立ち、mail.gol.com へ「EHLO」を送ったり「AUTH CRAM-MD5」送ったりする話です。
なので、
下記の方法でSMTP-AUTHが効いていることも確認しました。
~# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxx.ddo.jp ESMTP Postfix (Debian/GNU)
ehlo localhost
250-xxx.ddo.jp
...
250-STARTTLS
250-AUTH CRAM-MD5 NTLM LOGIN DIGEST-MD5 PLAIN
250-ENHANCEDSTATUSCODES
これも、この Postfix の Submission ポートで SMTP-AUTH の認証を受け付けるようになっている、ということであって、今回の目的とは無関係の事を確認していることになります。
で、気になるのが、
~# vi /etc/postfix/sasl_passwd
[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx
relayhost は mail.gol.com:587 がなのに、マップファイルでわざわざ [] を付けたのが気になります。
Postfix は relayhost に指定された mail.gol.com:587 へ送る際に、smtp_sasl_auth_enable が有効になっているので、smtp_sasl_password_maps に指定されたマップファイルを検索して、SMTP-AUTH で送るためのユーザ名、パスワードを調べます。
この時、おそらく、この relayhost に指定されている文字列をそのまま使って、マップファイルを検索すると思います。つまり、
/usr/sbin/postmap -q 'mail.gol.com:587' hash:/etc/postfix/sasl_passwd
というのと同じことをしていると思います。
実際、「[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx」と記述してマップファイルを作っていると、上記のコマンドで結果は得られません。
ユーザ名とパスワードが得られなければ、認証情報を mail.gol.com へ送る事が出来ないわけですから SMTP-AUTH の認証処理は行われず、結果、mail.gol.com に中継を拒否される、という事が起きているのではないかと想像します。
JULYさん
丁寧で解かりやすいご説明をありがとうございます。
お影さまで、当Postfixから外部MTAへのメール転送に成功しました。
設定一つ一つの意味と関係をしっかり理解していれば、
そんなに難しいことではなかったんですね。
しかし、ネットでは細切れの情報がたくさんあって、
『精査・選別する』のが難しいとも思う今日この頃です。
Postfix manual は基本だな、と思いました。
ありがとうございました。
JULYさん
丁寧で解かりやすいご説明をありがとうございます。
お影さまで、当Postfixから外部MTAへのメール転送に成功しました。
設定一つ一つの意味と関係をしっかり理解していれば、
そんなに難しいことではなかったんですね。
しかし、ネットでは細切れの情報がたくさんあって、
『精査・選別する』のが難しいとも思う今日この頃です。
Postfix manual は基本だな、と思いました。
ありがとうございました。