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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

解決済

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

Sfidante
Sfidante

総合スコア90

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

4回答

0グッド

2クリップ

20115閲覧

投稿2015/08/12 06:01

編集2015/08/12 06:02

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ページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

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

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

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

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

適切な質問に修正を依頼しましょう。

回答4

2

ベストアンサー

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

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

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

投稿2015/08/12 12:09

TaichiYanagiya

総合スコア11939

norinori, Sfidante👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

eripong

2015/08/12 12:33

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

2015/08/12 13: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
TaichiYanagiya

2015/08/12 13:45

このエラーは別の質問(https://teratail.com/questions/14197)で回答したとおりです。 さらに TLS で使用する証明書も用意されていないようです。 すべての機能を一度にやろうとせず、一つ一つの機能を実現していった方がよいと思います。 まずは、SMTP Auth(smtpd_sasl_* 関連)は送信に関する機能ですので、一度無効にして 受信できるかどうか試してみてください。
Sfidante

2015/08/13 08:40 編集

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

1

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

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

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

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

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

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

投稿2015/08/12 07:53

miyamotok

総合スコア12

Sfidante👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

Sfidante

2015/08/12 08:56

ご回答ありがとうございます。 >1)ドメインの登録 ドメインの登録に関しては、 送信ができる時点で登録はできていると思います。 >2)DNSの構築 こちらもメール送信ができている時点で構築はできていると思います。 送信に関しては問題無いと考えております。 問題はメールを受信した際の処理だと思うのですが、 原因解明ができない状況です。
miyamotok

2015/08/12 09:25

ドメインの登録、DNSの構築を実施されているのであれば違う問題かもしれませんが、メール送信に限っては上記の2点は必要ありません。 postfix等のmtaはresolvが正しく設定されており、インターネット側の名前解決ができMXレコードが解決できればメールは送信できてしまいます。
Sfidante

2015/08/12 09:52

ドメインの登録に関しては、 アプリとして、そのドメインを利用してアクセスできるため問題無いと思います。 DNSに関しては AWSのRoute53を利用して、 ドメインを取得したお名前.comに設定しているので、 設定はできているかと思います。 現状、telnet ドメイン名 25で行うと、 telnet: connect to address IPアドレス: Connection timed out というエラーが出ているようなのですが、 こちらは関係ありますでしょうか?
TaichiYanagiya

2015/08/12 10:00

"telnet IPアドレス 25" では接続できますか?
miyamotok

2015/08/12 10:03 編集

> telnet: connect to address IPアドレス: Connection timed out 関係するのは以下です。 ・iptalbes:TCP 25 を開放しているか? ・main.cf:mynetworks に設定してあるセグメントから接続(telnet)しているか? ・master.cf:smtp が25ポートをlistenしているか? ・AWS -- telnetを実施している端末間にポートを閉塞している機器がないか。 最小限から切り分ける必要があります。 mailサーバ上で、telnet localhost 25 で接続できますか?
miyamotok

2015/08/12 10:21

今気付きましたが、「telnet ドメイン名 25」ではなく、「telnet メールサーバ名 25」としないと接続できないのではないでしょうか? メールサーバ名が名前解決できている前提ですが。
Sfidante

2015/08/12 11: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と同義でしょうか?
miyamotok

2015/08/12 13:11 編集

>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 = "ドメイン名"」です。
Sfidante

2015/08/13 08:42

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

0

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

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

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

投稿2015/08/18 07:37

tsuntsun

総合スコア199

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

0

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

投稿2015/08/12 06:04

Katsuu

総合スコア20

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

Katsuu

2015/08/12 06:13

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

2015/08/12 06:28

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

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

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。