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

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

ただいまの
回答率

90.54%

  • CentOS

    3078questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    314questions

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

  • SMTP

    109questions

    SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

postfix メール送信ができない

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,144

tomomi66

score 26

これの前では漠然とした質問をしてしまい、そんな中でもご親切にたくさんの方が回答等してくださりありがとうございました。

その後、メールの受信は出来るようになったのですが、送信だけがエラーとなってしまい、Thanderbirdとoutlook、iPhoneメールででも出来ません。

出てくるエラーが

5.7.1 Service unavailable; Client host [xxx.xxx.xxx.xxx] blocked using zen.spamhaus.org; https://www.spamhaus.org/query/ip/xxx.xxx.xxx.xxx

(xxx.xxx.xxx.xxxはvpsのIPではなく自宅IPです)
と出てきます。

SpamhanusでvpsのIPアドレスを入れたところ、こちらはブロックされておらず、自宅IPだけがはじかれている状態です。

該当のアドレス(https://www.spamhaus.org/query/ip/xxx.xxx.xxx.xxx)にアクセスしたところ以下の結果となりました。

xxx.xxx.xxx.xxx is not listed in the SBL
xxx.xxx.xxx.xxx is listed in the PBL, in the following records:
    PBL1551065
xxx.xxx.xxx.xxx is not listed in the XBL


PBL1551065のリンク先の説明は「メールクライアントにSMTP認証設定をきちんとしてください。」との内容。。。

このxxx.xxx.xxx.xxxアドレスで、同じメールクライアントからgmailでメール送信はできますので、vpsにつなぐ時に何か問題があるのかと考えています。
実際maillogでも同様の文字が出ていました。
考えられる障害はなんだと思いますか?
教えてください。

centos7.0
postfix-2.10.1-6.el7.x86_64
dovecot-2.2.10-7.el7.x86_64
Let's Encrypt のクライアントソフトをインストールして、SSL/TLS証明書の取得して利用しています。
環境が少し違いますが、↓を参考に構築しました。
SSLメールサーバ構築メモ Let's Encrypt+Postfix+Dovecot

どうぞよろしくお願いします。

postconf -nは↓です。

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = yes
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 204800000
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 5120000
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = zero-6.net
myhostname = mail.zero-6.net
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relay_domains = $mydestination
relayhost =
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access reject_rbl_client zen.spamhaus.org reject_rbl_client all.rbl.jp reject_non_fqdn_sender reject_unknown_sender_domain
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_sender_restrictions = reject_rhsbl_sender zen.spamhaus.org reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.zero-6.net/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.zero-6.net/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
unknown_local_recipient_reject_code = 550
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • ikedas

    2017/01/18 22:02

    (1) 自宅から、今回構築したメールサーバを使って、メールを送信しようとしているということでいいですか。(2) ご提示のエラーメッセージはどこに出てくるのでしょうか。メールソフトの画面なのかサーバのログなのか。(3) サーバソフトウェアの設定を示して下さい。ひとまずPostfixについては「postconf -n」を実行して出力される内容を示していただければ。

    キャンセル

  • tomomi66

    2017/01/18 22:39

    ありがとうございます。 (1)書いていただいたその通りです。(2)メールソフトでダイアログとして表示され、maillogも見てみたところ、同じメッセージが出ていました。

    キャンセル

  • ikedas

    2017/01/18 23:05

    状況把握しました。(3) の設定をお待ちしてます (急がなくてもお時間取れるときでいいです)。

    キャンセル

  • tomomi66

    2017/01/18 23:13

    お待たせしました。編集できていると思ったらできていませんでした。。。すみません。加筆いたしました。

    キャンセル

回答 4

checkベストアンサー

+4

ynakanoさんのおっしゃる通り、ご自宅のIPアドレスがDNSブラックリスト (DNSBL) に登録されており、メールサーバ側ではブラックリストに登録されたIPアドレスからのアクセスは拒否するように設定しているため、ご自宅からメールを送ろうとすると失敗しています。

設定の関係する部分を抜粋します (適宜改行とスペースを入れています)。

smtpd_client_restrictions =
  check_client_access hash:/etc/postfix/access
  reject_rbl_client zen.spamhaus.org
  reject_rbl_client all.rbl.jp
  reject_non_fqdn_sender
  reject_unknown_sender_domain
smtpd_sender_restrictions =
  reject_rhsbl_sender zen.spamhaus.org
  reject_unknown_sender_domain
smtpd_recipient_restrictions =
  permit_mynetworks
  permit_sasl_authenticated
  reject_unauth_destination


もっとも、一般家庭用のIPアドレスがDNSBLに登録されることは特に珍しいことではありません。もともとメールサーバなどの常設機器が設置されないはずのアドレスですので、そこからインターネット上のサーバにメールが送られてくるとしたら、スパム送信業者などが送っている可能性が高いからです。

しかし、今回は信頼されたホスト同士でメールをやり取りしようとしているのですから、そういう一般的な仮定に基づいてアクセスをブロックしては困ります。ご自宅のアドレスをアクセス制限から除外してやる必要があります。

 変更案1: DNSBL検査から自宅IPアドレスを除外する

上の設定を見ると、smtpd_client_restrictionsにいくつかのDNSBLを参照する設定がされています。しかし、最初のcheck_client_accessで例外を設定できるようにしてありますね。これを使いましょう。

/etc/postfix/accessに、次の行を追加します。

ご自宅IPアドレス OK

追加したら、次のコマンドを実行してアクセスデータベースを更新します。

# postmap /etc/postfix/access

これで、ご自宅IPアドレスからのアクセスについてはsmtpd_client_restrictionsでのチェックをパスするようになります。


上の設定で、ご自宅からメールを送信できるようになると思います。

しかし、今後メールサーバを運用し続けていく上では、設定にいくつか安全上の問題があるように思います。より安全な設定について、もう少しご説明したいと思います。一両日中には回答の続きを書きますので、少々お待ちください。


 変更案1の問題点

上述の設定には、若干問題があります。

一つ目。自宅のIPアドレスは、ときどき変わるかもしれません。プロバイダとの契約にもよりますが、毎日のように変わる場合もあります。その度にaccessデータベースを更新するのは面倒です。

DNSBLによる検査をあきらめれば更新する手間はなくなります (例外設定のaccessデータベースがいらなくなるので) が、それでは本末転倒ですね。

二つ目。メールサーバのログに、こういうものがたびたび記録されていませんか。

postfix/smtpd[27014]: connect from unknown[XX.XX.XX.XX]
postfix/smtpd[27014]: warning: SASL authentication failure: Password verification failed
postfix/smtpd[27014]: warning: unknown[XX.XX.XX.XX]: SASL PLAIN authentication failed: authentication failure
postfix/smtpd[27014]: lost connection after AUTH from unknown[XX.XX.XX.XX]

見慣れないIPアドレスのクライアントが、何度も認証を試みて失敗しているようです (記録される文言はソフトウェア構成などにより多少違うかもしれません) 。

メールサーバは常にメールを受け取るため、インターネットの任意のホストからの接続を受け付けなければなりません。ところが、パスワード認証の設定がしてあるため、だれでも認証を試し放題になっています。総当たり攻撃をかければ、論理的にはいずれパスワードを突きとめることができます (そういった攻撃はプログラムで自動化されているので、いくら時間がかかっても攻撃者自身は疲れたりしません)。

 変更案2: サブミッションサービスを分離する

ユーザからのメール送信 (サブミッション) をPostfixのメインのサービスと分離すれば、これらの問題を解決できます。

まず、main.cfからサブミッション特有の設定を削除します。下でコメントアウトした箇所を削除します。

smtpd_client_restrictions =
  check_client_access hash:/etc/postfix/access
  reject_rbl_client zen.spamhaus.org
  reject_rbl_client all.rbl.jp
  reject_non_fqdn_sender
  reject_unknown_sender_domain
smtpd_sender_restrictions =
  reject_rhsbl_sender zen.spamhaus.org
  reject_unknown_sender_domain
smtpd_recipient_restrictions =
  permit_mynetworks
#  permit_sasl_authenticated
  reject_unauth_destination

#smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
  • SASL認証を無効にしています。

次に、サブミッションのサービスを追加します。master.cf (main.cfではない) に、次の記述を追加します。

submission inet n       -       -       smtpd
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes


-oオプションで、main.cfの設定を上書きできます。ここでは、サブミッション特有の設定として、次のようにしています。

  • 認証が有効。
  • 認証成功しなければ拒否。smtpd_*_restrictionsではそれ以外の制限は特に設けない。
  • TLSの暗号化が必須。

メールクライアント (メーラ) では、メール送信にサブミッションサービスを使うよう設定します。変更点は、ポートに通常の25や465ではなく、587を使うところです。また、TLSとSMTP認証を有効にします。

サーバのファイアウォール等では、587/tcpインバウンドを開ける必要があります。


以上の設定で、外部のホストに対してはDNSBL検査などが今まで通り行え、ユーザのメール送信もより安全にできるようになりました。

なお、ここまでの設定を終えたら、前の「変更案1: DNSBL検査から自宅IPアドレスを除外する」でaccessデータベースに追加した自宅IPは、削除してかまいません。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/03/31 19:46

    tomomi66様、ikedas様

    既に解決済みとなっているtomomi66様の投稿にコメントすることを何卒ご容赦下さい。
    全く同じ箇所でハマっておりまして、ikedas様の変更案1では送信できるのですが、変更案2ですと下記のエラーが出ております。

    AWSのEC2上で構築しております。
    (RedHatEnterpriseLinux 7.3、postfix 2.10.1、Dovecot 2.2.10)

    5.7.1 Service unavailable; Client host [ IP address] blocked using zen.spamhaus.org; https://www.spamhaus.org/query/ip/ [ IP address]

    /var/log/mail/maillogにも同様に

    Service unavailable; Client host [ IP address ] blocked using zen.spamhaus.org; https://www.spamhaus.org/query/ip/ [ IP address ];

    と出ております。

    アドバイス頂きたいのですが、お願いできますでしょうか。
    自身で投稿した方が良いということでしたらそのように致します。
    何卒宜しくお願い致します。

    キャンセル

  • 2017/03/31 21:23 編集

    ご自分で新たに質問をしていただいた方がいいと思います。その際は、
    ・どのような動作をさせたいのか。それに対して今はどのように動作しているのか。
    ・参考にしたウェブページがあればそれへのリンク、書籍なら書名や出版社。
    ・設定内容やサーバのログの出力。
    といったことを明記して下さい (質問に何を書けばいいのかについては、当質問も参考になさって下さい)。

    キャンセル

  • 2017/04/01 16:49

    ikedas様
    ありがとうございます。
    投稿したいと思います。
    宜しくお願い致します。

    キャンセル

+2

端的に言えば、お使いのIPアドレスがspamhausのブラックリストに載っている、ということだと思います。
MTAがspamhausのブラックリストを参照しているため、アドレスが記載されてしまったtomomi66さんのIPからの接続を拒否されている状態です。
※だからgmailにはつながるのだと思います。

該当のアドレス(https://www.spamhaus.org/query/ip/xxx.xxx.xxx.xxx)にアクセスしたところ以下の結果となりました。 

のくだりですが、spamhausのブラックリストにはSBL、PBL、XBLの3つがあり、そのうちPBLにお使いのIPアドレスが登録されてしまっている、と言うことになります。

BLの解除はこちらに記載があります。

問題の5.7.1エラーですが、tomomi66さんが(VPSに?)立てたpostfixが出力しているエラーでしょうか?
だとしたらmain.cfにspamhausを使う設定をしたということでしょうか?

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

原因を探るため
smtpd_???????_restrictionsというキーワードで設定してある項目を、
1つずつでよいので、コメントアウトして、動作を確認してください。
???????は、client、recipient、senderのどれかです。

postfix reloadを忘れずに。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

-1

変更案2: サブミッションサービスを分離する
を利用して設定したところ、問題なくメールが送信できました♪

みなさんありがとうございました♪

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • CentOS

    3078questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    314questions

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

  • SMTP

    109questions

    SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。