質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

postfixでメール受信ができずに困っています。→ゆくゆくは転送

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 11K+

Sfidante

score 98

AWS上にpostsixを立ち上げてメール送信・受信・転送をできるようにしたいと考えております。

現在は、送信はできていますが受信・転送ができておりません。

受信に関しましては、
設定上、/home/ユーザー名/Maildirにあると考えておりますが、
何も入っていない状態です(new、tmp、curを自分で生成しましたが入らず)

続きまして、転送に関しましては、
vi /etc/aliasesで
admin 転送したいメールアドレス
で設定いたしました。

そして、下記のコマンドでFromもToもpostfixで設定したメールアドレスで送信したところaliasesで設定したメールアドレスへの転送はできました。
snedmail "送信先メールアドレス"
From:"Fromメールアドレス"
To:"Toメールアドレス
Subject:test
test
.
しかし、他のFromから送信されても転送がされないという状況です。

エラーログを確認してもエラーは出ておらず、
原因がわかりません。

おそらくmain.cfの設定不足の点があるのではないのかと思っているのですが、
どこをどのように変更すればよいのかわからない状況です。
何卒ご教授お願い致します。
下記にmain.cfの設定を記載いたします。

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 1048576
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = "ドメイン名"
myhostname = "ホスト名"
mynetworks = 10.0.0.0/16, 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP unknown
smtpd_recipient_restrictions = permit_mynetworks    permit_sasl_authenticated    reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_use_tls = yes
unknown_local_recipient_reject_code = 550
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+2

内部からは受信できて、外部からは受信できない、その際、maillog に何も記録がないことから、外部からホストの 25番ポートに接続されていないと思われます。エラーメールも返って来ないのでしょうか?

原因として、以下が考えられます。
  1.  AWS のセキュリティグループで 25番ポートへの接続が制限されている
  2.  ホストの iptables で 25番ポートへの接続が制限されている
  3.  DNS に MXレコードが設定されていない
外部の PC などから "telnet (ホストのIPアドレス) 25" で接続できるかどうか。
接続できなければ、1,2 を確認。
接続できれば 3 を確認。

受信に関しては mynetworks は関係ありません。mydestination に受信ドメインが設定されていればよいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/12 21:33

    以前GoUsamiさんがMySQLに接続できなかった際は、
    セキュリティグループなど確認した後、
    最終的にVPCの設定をいじったらつながったということでしたが、
    今回はその点は大丈夫でしょうか?

    以前の質問:
    https://teratail.com/questions/13466

    キャンセル

  • 2015/08/12 22:35

    ご回答ありがとう御座います。
    AWSにおけるセキュリティグループの25番ポートが設定されていなかったようです。

    そして外部から送信してみたところ下記のエラーが出力されました。

    postfix/smtpd[9923]: warning: No server certs available. TLS won't be enabled
    postfix/smtpd[9923]: warning: SASL: Connect to private/auth failed: No such file or directory
    postfix/smtpd[9923]: fatal: no SASL authentication mechanisms
    postfix/master[2439]: warning: process /usr/libexec/postfix/smtpd pid 9923 exit status 1
    postfix/master[2439]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

    キャンセル

  • 2015/08/12 22:45

    このエラーは別の質問(https://teratail.com/questions/14197)で回答したとおりです。
    さらに TLS で使用する証明書も用意されていないようです。

    すべての機能を一度にやろうとせず、一つ一つの機能を実現していった方がよいと思います。
    まずは、SMTP Auth(smtpd_sasl_* 関連)は送信に関する機能ですので、一度無効にして
    受信できるかどうか試してみてください。

    キャンセル

  • 2015/08/13 17:40 編集

    毎度毎度ありがとうございます。
    ご指摘のおかげで
    smtpdの設定に異常があっての受信エラー・転送エラーだったようです。
    ありがとうございます。

    キャンセル

+1

想定で回答します。
適合しない、または実施済みの回答であれば読み飛ばしてください。

自ドメイン以外との送受信をお望みの場合は以下のタスクが必要になります。
1)ドメインの登録
以下のページに解説されています。
http://jprs.jp/registration/flow/

登録は指定業者を介して行います。
お名前.comとか

2)DNSの構築
DNSを構築の上、自ドメインのMXレコードを登録する必要があります。
DNSはメールサーバと同居させても構わないし、そうでなくても良いです。


気になる点としては、上記を行わないで自ドメイン以外にメールを送信した場合、メールスパムサイトとして判定されてしまいます。ブラックリスト入りすると何かと面倒です。

自ドメイン内での送受信しか行わないのであれば、それ程問題ある設定には見受けられません。
メールサーバにuserAとuserBのUnixアカウントが居たとして、双方の送受信はできるのではないでしょうか。


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/12 20:13

    ご返信ありがとうございます。

    >iptalbes:TCP 25 を開放しているか?
    sudo lsof -i -P | grep "LISTEN" コマンドで確認いたしましたところ
    master 2439 root 12u IPv4 9758 0t0 TCP *:25 (LISTEN)
    master 2439 root 13u IPv6 9759 0t0 TCP *:25 (LISTEN)
    という具合に開いておりました。

    >main.cf:mynetworks に設定してあるセグメントから接続(telnet)しているか?
    現在は、EC2内から接続をしており、
    そのパブリックIP等は52...です。
    一方で、mynetworksで設定しているのが、
    10.0.0.0/16、127.0.0.0/8ということなのですが、
    これでは良くなく、52.0.0.0./24等追加する必要があるということでしょうか?

    >master.cf:smtp が25ポートをlistenしているか?
    netstat -an | grep :25 コマンドで確認したところ、
    tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
    tcp 0 0 :::25 :::* LISTEN
    といった形でlistenしています。

    >AWS -- telnetを実施している端末間にポートを閉塞している機器がないか。
    ごめんなさい、いまいちわかりませんが、
    そういった機器はないと思われます。

    >mailサーバ上で、telnet localhost 25 で接続できますか?
    実行したところ、
    Connected to localhost.
    Escape character is '^]'.
    Connection closed by foreign host.
    という返答が来たので問題ないかと思います。

    >今気付きましたが、「telnet ドメイン名 25」ではなく、
    >「telnet メールサーバ名 25」としないと接続できないのではないでしょうか?
    ウェブサイトで調べたところ
    telnet ホスト名 25と同義でしょうか?

    キャンセル

  • 2015/08/12 22:06 編集

    >iptalbes:TCP 25 を開放しているか?
    > sudo lsof -i -P | grep "LISTEN" コマンドで確認いたしましたところ
    > master 2439 root 12u IPv4 9758 0t0 TCP *:25 (LISTEN)
    > master 2439 root 13u IPv6 9759 0t0 TCP *:25 (LISTEN)
    > という具合に開いておりました。
    lsofは待ち受けポートを調べるコマンドではないでしょうか?
    OSが何かわかりませんが、Redhat6系であれば以下で確認可能です。
    iptables -L
    service iptables status
    less /etc/sysconfig/iptables


    >現在は、EC2内から接続をしており、
    >そのパブリックIP等は52...です。
    >一方で、mynetworksで設定しているのが、
    >10.0.0.0/16、127.0.0.0/8ということなのですが、
    >これでは良くなく、52.0.0.0./24等追加する必要があるということでしょうか?
    パブリックIPの範囲が24bitとは考えにくいですが・・・
    テストとして接続元のIP/32bitを追記の上、postfixを再起動してテストしては如何でしょうか。
    mynetworkの設定は適切にしないとスパムの踏み台にされるので注意が必要です。


    >mailサーバ上で、telnet localhost 25 で接続できますか?
    >実行したところ、
    >Connected to localhost.
    >Escape character is '^]'.
    >Connection closed by foreign host.
    >という返答が来たので問題ないかと思います。
    バナーが帰ってきていないようです。
    正常に接続できていれば、main.cfに設定した「smtpd_banner = $myhostname ESMTP unknown」の値が帰ってくるはずです。
    具体的には以下が表示されるはずです。
    ”メールサーバ ホスト名" ESMTP unknown

    上記返答ではSMTPコマンドを受付ない気がしますが、如何でしょう?
    SMTPコマンドについてはgoogle等でお調べください。

    >ウェブサイトで調べたところ
    >telnet ホスト名 25と同義でしょうか?
    メールサーバのホスト名とご理解ください。


    以降の切り分けを記載しておきます。
    localhostでsmtp接続できるのであれば、次は外部からのテストになりますが、
    > 現在は、EC2内から接続をしており、
    上記のホストのIPをmain.cf mynetworkに追記の上、「telnet "メールサーバのIPアドレス" 25」で接続します。
    本テストに失敗した場合、いずれかの経路でTCP25が閉塞されています。

    上記がOKであれば、「telnet "メールサーバのホスト名" 25」で接続します。
    本テストに失敗した場合、メールサーバのホスト名が名前解決できていません。
    DNSレコードの見直しになります。

    ここまで成功できていれば、あとはMXレコードの問題となります。
    以下のコマンドでメールドメイン名の名前解決ができているか確認します。
    nslookup -type=mx ”メールドメイン名”※
    ※main.cfに設定している「mydomain = "ドメイン名"」です。

    キャンセル

  • 2015/08/13 17:42

    ご丁寧に解説していただきありがとうございます。
    おかげさまで解決することができました。
    ありがとうございます。

    キャンセル

0

DNSの設定じゃないですか?
メールログを見てみて下さい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/12 15:13

    メール受信にはdovecotとかが必要です。

    キャンセル

  • 2015/08/12 15:28

    ご回答ありがとうございます。
    メールログに関しては受信した際は
    全く出力されていないようです。

    キャンセル

  • 2015/08/12 15:30

    dovecotに関しては
    http://dev.classmethod.jp/cloud/aws/mail_server_with_postfix_and_dovecot/
    を参考に設定はしたつもりです。

    キャンセル

0

解決済みの様なので、特定のサーバに送信できない時の見逃しポイントを2つほど

逆引きが登録されていない
SPF(or TXT spf1) が登録されていない

サーバの設定に依っては、上記が設定されていないMXからの受信を拒否する物があります。
ご参考までに。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる