プロが教えるわが家の防犯対策術!

外部(出先)から自宅サーバー経由(postfix)でメール送信することができません。

・サーバー ubuntu
・MTA postfix
・プロバイダ ASAHI NET
・回線 au ひかり

【状態】
出先でメーラーを開いて、自宅サーバーを経由してメール送信をすると

554 5.7.1 <xxxxxx@example.com>: Client host rejected: Access denied

と返ってくる。
LAN内からは587番ポートを使い、プロバイダのメールサーバーを経由しての外部への送信は可能。
なので簡単にいくかと思ったら、かなりハードルが高いようです。
送信元の

●postconf -n の結果の抜粋
mynetworks = 192.168.1.0/28, 127.0.0.0/8
mynetworks_style = subnet
myorigin = $mydomain
readme_directory = no
recipient_delimiter =
relay_domains = $mydestination
relayhost = [mail.asahi-net.or.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = PLAIN, LOGIN, DIGEST-MD5, CRAM-MD5
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = no
smtpd_banner = $myhostname ESMTP unknown
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_local_domain =
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_sender_restrictions =
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = !SSLv2
smtpd_tls_received_header = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550

●master.cf
submission inet n - - - - smtpd
#-o smtpd_sasl_auth_enable=yes
-o smtpd_etrn_restrictions=reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

●外部のメーラーからは
・自宅のドメイン+587番ポート+認証で接続

【その他考えられる原因】
・プロバイダや回線自体ができない仕様になっていればしかたがない。自宅サーバーなどのことについては回答不可能とのこと。

●やってみたこと
mynetworks = 192.168.1.0/28, 127.0.0.0/8

mynetworks = 127.0.0.0/8
としたり、
mynetworks = 127.0.0.0/8, [外部メーラーを送信するIPアドレス]
などとしましたが、よりひどくなるか、送信できません。
しらべていくとこいつが肝な感じなので
smtpd_recipient_restrictions=
permit_sasl_authenticatedを加えたものにしてみてもだめでした。

どなたかわかる方はいらっしゃいますか。

A 回答 (2件)

>Client host rejected ということは自宅サーバーが拒否しているっていうことであって、自宅サーバーの先であるプロバイダ、回線、送信先メールアドレスのサーバーが拒否しているってことじゃないですよね?



これはその通りです。

>mynetworks = 192.168.1.0/28, 127.0.0.0/8
>これは関係してきますか?

関係しますが、今回のケースでは上記で変更の必要はありません。

このパラメタは転送を無条件で許可するネットワークになるのでローカルLANとローカルループバックの設定のみで良いはずです。

今回は、外部からのアクセスなので送信元が不特定のアクセスになるのでここには書けません。
(というか書いてはいけません)

SMTP認証が通ったら接続や転送を許可する設定、
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

-o smtpd_client_restrictions=permit_sasl_authenticated,reject
で対応するわけです。


ところで、ログですが関連するのはそこに書かれたものだけですか?
このログだけを見るとSMTP認証をしていないように見えますが。。。
SMTP認証をしていなければ554で拒否されて当然なので、SMTP認証関係の設定(サーバ、クライアントとも)に問題が無いか確認されてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

結果は成功しました。

ご指摘のとおりSMATP認証がうまくいっていませんでした。
こちらのサイトの
http://www.postfix-jp.info/trans-2.3/jhtml/SASL_ …
【Postfix SMTPサーバに対するDovecot SASLの設定】
を参照して設定し、
【Postfix SMTP サーバで SASL 認証をテストする】
で確認を行いながらテストが成功するようになってから、
こちらのサイトの
http://linux.kororo.jp/cont/server/smtp_auth.php
【■Microsoft Outlook or OutlookExpressの設定】
を参照してテスト送信をおこなったところうまくいきました。

本当に助かりました。
ありがとうございます!!

お礼日時:2013/04/09 13:55

>●master.cf


>submission inet n - - - - smtpd
>#-o smtpd_sasl_auth_enable=yes
>-o smtpd_etrn_restrictions=reject
>-o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtpd_sasl_auth_enable=yes をコメントしているので
smtpd_sasl_auth_enableはデフォルトはnoだと思いますので、SASLによるSMTP Auth は無効になると思いますが、
その2行下で、接続するクライアントが、SMTP Auth で認証が確認されたものを許可しそれ以外を拒否している。

設定が矛盾していませんか。

あとmaillogとかは確認しましたか。

この回答への補足

ありがとうございます。
コメントアウトを外してテストをしましたが、同じエラーがでました。

以下はログです。
connect from q9456875.fff.example.com[発信元IP]
NOQUEUE: reject: RCPT from q9456875.fff.example.com[発信元IP]: 554 5.7.1
<q9456875.fff.example.com[発信元IP]>: Client host rejected: Access denied;
from=<送信元メールアドレス> to=<送信先メールアドレス> proto=ESMTP helo=<xxxx>
disconnect from q9456875.fff.example.com[発信元IP]

こうなってくるとどこが問題なのでしょうか。
Client host rejected ということは自宅サーバーが拒否しているっていうことであって、自宅サーバーの先であるプロバイダ、回線、送信先メールアドレスのサーバーが拒否しているってことじゃないですよね?

mynetworks = 192.168.1.0/28, 127.0.0.0/8

これは関係してきますか?許可するネットワークの指定だと思うのですが、これが外部からを拒否しているのかなと思うのですが、どうすればいいかまで想像もつきません。
とりあえず私自身はこのmynetworks周りで探ってみようと思います。

わかる方がいらっしゃれば教えていただきたいです。

補足日時:2013/04/05 13:40
    • good
    • 0

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