重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

さくらのVPSを借りてdebianでpostfix(+ dovecot)のメールサーバーを立ち上げました。
一通り設定して、以下のように動きを確認しました。

○ メールを、サーバー自身からサーバー自身へ送る
○ メールを、サーバーから外部メール(gmail)へ送る
× 外部メール(gmail)から、サーバーへ送る

gmailから私が立てたサーバーへ送るメールが受信できずに失敗します。
gmailでは、下記のようなエラーメールが返ってきます。

---
This is an automatically generated Delivery Status Notification

THIS IS A WARNING MESSAGE ONLY.

YOU DO NOT NEED TO RESEND YOUR MESSAGE.

Delivery to the following recipient has been delayed:

test1@example.com

Message will be retried for 2 more day(s)

Technical details of temporary failure:
The recipient server did not accept our requests to connect. Learn more at http://mail.google.com/support/bin/answer.py?ans …
[mail.example.com. (10): Connection refused]
---

そして、/var/log/mail.logには、この際何も記述されていません。

そのため、postfixへメールが送られる以前にどこかで間違っているのだと思うのですが、原因を特定できません。

上記、googleのエラーメールに「参考にしてねhttp://mail.google.com/support/bin/answer.py?ans …」みたいなアドレスが書いてあるので、参考にしてみたのですが、

・相手側のドメインに最新の MX レコードがないか、設定が不適切です。

上記に関してはdigコマンドで
#dig example.com MX
とコマンドを打って見たところ、ANSWER(mail.example.com)が返ってきたので問題はないのでは、と考えています。

・相手側のドメインで Gmail からのメールがブラックリストやグレーリストに登録されています。

上記、アドレスを拒否するような指定はpostfixのmain.cfで参考書を元に下記設定をしたところがありますが、
smtpd_client_restrictions = permit_mynetworks, reject_rhsbl_client all.rbl.jp
試しにコメントアウトしてみても、メールを受信できませんでした。

・相手側のドメインで一時的にネットワークの問題が発生しています。

pingとtracerouteで、きちんとつながることを確認しています。

対象のメールアドレスがバーチャルメールアドレスなのですが、バーチャルメールアドレスにおいて何らかの設定ミスがあるのであれば、/var/log/mail.logにログが残るはずなので、やはりそれ以前の何かがおかしいのではと疑っています。

下記に、バーチャルメールアドレスの為のDNSサーバーの現在の設定を書いておきます。

---------
example.com. 1D IN SOA ns.example.com. root.example.com. (
2011101502 ;serial
28800 ; refresh
7200 ; retry
3600000 ; expiry
3600 ; minimum
)
IN NS ns.hoge.net. ; ネームサーバ
IN NS ns.hoge2.net. ; セカンダリネームサーバ
IN MX 10 mail.example.com. ; メールサーバ1
IN A 12.345.67.89 ; webサーバ
www IN A 12.345.67.89 ; webサーバー
mail IN A 12.345.67.89 ; メールサーバー

-----------------

(実際に指定しているアドレスはexample.comではなく、自分で取得したアドレスを使用しています)

何か、原因が分かる方いらしゃいまいたらお教え願えませんでしょうか?
足りない情報がありましたら、ご指摘いただければ追加いたします。
また、「試したって書いてるけど、ほんとにこれやって試した?もう一回やってみ」というツッコミも待っています。

以上、よろしくおねがいいたします。

A 回答 (7件)

>○ メールを、サーバー自身からサーバー自身へ送る


このメール送信方法は、どのように行いましたか?

もし、メール送信方法が
サーバ内でsendmailコマンドやmailコマンドを起動する方法だと、
SMTPによる通信を一切行いません。

従って、サーバのSMTP受信設定が誤っている可能性でてきます。
e.g. iptablesで25/tcpを接続拒否している。
e.g. TCP Wrapperで接続拒否している。
e.g. smtpdが25/tcpでlistenしていない。

テスト項目として、
 ・同一サーバ内から
  127.0.0.1の25/tcpポートへ、telnetで接続できることを確認する。

 ・同一サーバ内から
  グローバルIPの25/tcpポートへ、telnetで接続できることを確認する。

 ・Outbound port 25 blocking制限がないノード※から、
  当該サーバの25/tcpポートへ、telnetで接続できることを確認する
 ※他プロバイダのメールサーバの25/tcpにtelnet接続できるかどうかで
  制限有無が確認できます。

等の試験を行ってみると原因の切り分けになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。頂いたご回答を元に、解決致しました。

参考書を読みながらpostfixサーバーを立てたのですが、その本にOPB25の解説があり、スパムメール制限の為に25番ポートの使用を制限し、代わりに587番のサブミッションポートを使用するよう解説があったため、そのように設定したのち、25番ポートは不要と思いポートを閉じてしまっていました。

上記テスト項目をいただき、25番ポートを開いてテストしている途中に、以前外部からサーバーに送信して(そして彷徨って)いたメールが受信できていることに気がつきました。

(でも、25番ポートはあんまり使ってはいけないのでは?という疑問が残りますが……)。

お礼日時:2011/10/15 19:26

postfix上の具体的な設定の話ではありませんが、


Outbound port 25 blockingやサブミッションポートのポリシー(考え方)は、
以下のようになっています。

1.メールサーバのsmtp(25/tcp)は、自ドメイン宛のメールのみ受付する。
  他ドメイン宛のメールは受付拒否する。

2.メールサーバのsubmission(587/tcp)は、SMTP-Authで認証OKの場合のみメール受付する。
  SMTP-Auth認証しないメールは受付拒否する。

3.ネットワーク管理者(ISPや企業など)は、ファイアウォールで以下の通信制限を実施する。
  -自ネットワークのメールサーバからのSMTP(外向け25/tcp)は通信許可する。
  -メールサーバ以外からのSMTP(外向け25/tcp)は遮断する。
  -submission(外向け587/tcp)は通信許可する。

「上記の3設定を全世界で行えば、スパムメールの送信数を減らせるはず」
というのがその根底にある目的ですね。逆に、
「自分がスパムメール送信の加害者にならないためには、上記の3設定を遵守しましょう」
という話でもあります。


結論、適切な設定でsmtp(25/tcp)ポートを開放することは全く問題ありません。
上記の3設定を遵守して、自らがスパムメール送信の加害者とならないよう
留意しましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。OPB25対応に関してはきちんと理解できていませんでした(特に1番に関して)。

お礼日時:2011/10/16 23:44

>参考書を読みながらサーバーを立てたのですが、OPB25対応の項目を読んで、サブミッションポート(587)を開き、その際に25番ポートを閉じてしまったのが原因でした。


>「25番ポートは開いていいの?スパムメール送っちゃったりしないの?」と個人的に思うのですが。

外部からのメールを受けたければポート25の解放は必須です。送信側にポート番号を知らせる方法はありませんし、あなたのサーバーからは相手の25に送っていますよね?

ポート25でメールを受けることと迷惑メール送信とは直接関係はありません。
Postfixの設定で適切な規制を掛ける、受け取った側で処理する(SpamAssassinとか)などの対策を考えるとよろしいかと。
第三者転送を防止する設定を行っておけば入り口の対策としては十分です。

うちのpostfixはこんな設定になってます。
smtpd_client_restrictions = permit_mynetworks, reject_rbl_client all.rbl.jp
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
    • good
    • 0
この回答へのお礼

ありがとうございます。OPB25対応に関してはきちんと理解できていませんでした。

お礼日時:2011/10/16 23:42

ひょっとするとmydestinationがデフォルトのままになっていませんか?



このままだと127.0.0.1ではないアドレスの25番ポートは開かれませんので、適切な設定を行ってください。

↓この状態だと自分のサーバーを起点とするメール送受信は出来ますが、外部からは接続できない状態です。

#postconf -n

mydestination = $myhostname, localhost.$mydomain, localhost

この回答への補足

ご回答ありがとうございます。

参考書を読みながらサーバーを立てたのですが、OPB25対応の項目を読んで、サブミッションポート(587)を開き、その際に25番ポートを閉じてしまったのが原因でした。

「25番ポートは開いていいの?スパムメール送っちゃったりしないの?」と個人的に思うのですが。

補足日時:2011/10/15 19:37
    • good
    • 0

> [mail.example.com. (10): Connection refused]



とあるのでSMTPのポートに接続できないようですね。

ファイヤウォールでブロックしていないでしょうか?

また Postfix が外部から接続できるようにTCPの25番ポートで待ち受けているでしょうか。

試しに netstat -lntp を実行して以下のような行が見つかるでしょうか。

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2865/master

もしLocal Address (内部アドレス) が 127.0.0.1:25 になっている場合はサーバーの
外部から接続できません。

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2865/master
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

すみません。頂いた回答から順に確認していましたが、tomajuさまのアドバイスがそのものズバリですね。

参考書をもとにpostfixサーバーを立てたのですが、OPB25への対応としてサブミッションポート(587)を使用するよう書かれていたため、そのように設定し、その際に25番ポートは不要なものと判断して閉じてしまっていました。

でも、25番ポートはスパムメール対策として開けてはいけないんじゃないの、という疑問が残りますが……。

お礼日時:2011/10/15 19:31

maillogに何も載らないと言うことは、そもそも接続が行われていません。


なのでPostfixの設定以前の話と言うことになります。

一番考えられるのはドメインの設定が正しく行われておらず、ルートDNSサーバーからたどれない状態になっている。ですかね…

自分のサーバーでdigを実行するところまでは良いのですが、別のサーバーからの応答も見てみてください。
たとえばGoogle Public DNSとか(dig mx example.com @8.8.8.8)です。

この回答への補足

回答ありがとうございます。

教えていただいた下記コマンド

dig mx example.com @8.8.8.8

実際のアドレスで試してみたのですが、下記のようなANSWER SECTION
;; ANSWER SECTION:
example.com.10799INMX10 mail.example.com.

が表示されたので、おそらく大丈夫だと思います。

補足日時:2011/10/15 18:44
    • good
    • 0

POP3(110)のポートは開けましたか?


※SMTPは送信が出来ているから開いていると思いますが

この回答への補足

回答ありがとうございます。

#iptables -L

で確認しましたが、開けてありました。
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3

補足日時:2011/10/15 18:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!