postfix構築して、LANの外のメールアドレスへメールを送信しようとしています。


プロバイダが 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


アドバイスお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/09/15 23:37:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:JULY No.2

回答回数966ベストアンサー獲得回数247

ポイント40pt

ちょっと混乱されているかも...

~# 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

というのと同じことをしていると思います。

Postfix manual - postmap(1)

実際、「[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx」と記述してマップファイルを作っていると、上記のコマンドで結果は得られません。

ユーザ名とパスワードが得られなければ、認証情報を mail.gol.com へ送る事が出来ないわけですから SMTP-AUTH の認証処理は行われず、結果、mail.gol.com に中継を拒否される、という事が起きているのではないかと想像します。

id:gdwtseq

JULYさん

丁寧で解かりやすいご説明をありがとうございます。

お影さまで、当Postfixから外部MTAへのメール転送に成功しました。

設定一つ一つの意味と関係をしっかり理解していれば、

そんなに難しいことではなかったんですね。

しかし、ネットでは細切れの情報がたくさんあって、

『精査・選別する』のが難しいとも思う今日この頃です。

Postfix manual は基本だな、と思いました。

ありがとうございました。

2010/09/15 23:36:19

その他の回答1件)

id:studiocherry No.1

回答回数283ベストアンサー獲得回数100

ポイント30pt

> 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...

id:gdwtseq

ありがとうございます。

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エラーとなりました。

未だ、必要な設定が有りますでしょうか?

2010/09/12 23:53:41
id:JULY No.2

回答回数966ベストアンサー獲得回数247ここでベストアンサー

ポイント40pt

ちょっと混乱されているかも...

~# 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

というのと同じことをしていると思います。

Postfix manual - postmap(1)

実際、「[mail.gol.com]:587 xxxxxx@gol.com:xxxXXXXxx」と記述してマップファイルを作っていると、上記のコマンドで結果は得られません。

ユーザ名とパスワードが得られなければ、認証情報を mail.gol.com へ送る事が出来ないわけですから SMTP-AUTH の認証処理は行われず、結果、mail.gol.com に中継を拒否される、という事が起きているのではないかと想像します。

id:gdwtseq

JULYさん

丁寧で解かりやすいご説明をありがとうございます。

お影さまで、当Postfixから外部MTAへのメール転送に成功しました。

設定一つ一つの意味と関係をしっかり理解していれば、

そんなに難しいことではなかったんですね。

しかし、ネットでは細切れの情報がたくさんあって、

『精査・選別する』のが難しいとも思う今日この頃です。

Postfix manual は基本だな、と思いました。

ありがとうございました。

2010/09/15 23:36:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません