Postfixの「Relay Access Denied」を修正するには?


54

今朝、セキュリティ証明書の名前の不一致に関する問題を修正するために、「メールサーバーのSSLを修正する方法」の推奨手順に従いました、しかし今、クライアントからメールを送信しようとすると(この場合、クライアントはWindowsメールです)、次のエラーを受け取ります。

拒否されたメールアドレスは「email@gmail.com」でした。件名 'これはテストです。'、アカウント:' mail.domain.com '、サーバー:' mail.domain.com '、プロトコル:SMTP、サーバー応答:' 554 5.7.1:リレーアクセスが拒否されました '、ポート:25、セキュア(SSL):いいえ、サーバーエラー:554、エラー番号:0x800CCC79

編集:このアカウントから引き続きメールを取得でき、同じドメインの他のアカウントにメールを送信します。ドメイン外の受信者にメールを送信できません。

TLSを完全に無効にしようとしましたが、サイコロは使用しませんでしたが、同じエラーが引き続き発生します。

fileをチェックするとmail.log、次のように表示されます。

Jul 18 08:24:41 company imapd: LOGIN, user=user_name@domain.com, ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, user=user_name@domain.com, ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <email@gmail.com>: Relay access denied; from=<user_name@domain.com> to=<email@gmail.com> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, user=user_name@domain.com, ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

ファイルmain.cfは次のようになります。

#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#

#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

#
# Some common configuration parameters;
#

inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop

#
# Receiving messages parameters;
#

mydestination = localhost, company 
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf

#
# Delivering local messages parameters;
#

mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"

biff = no

alias_database = hash:/etc/aliases

local_recipient_maps =

#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf


#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain =

broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
        permit_sasl_authenticated
        permit_mynetworks

smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination

補足として、私の雇用主は、ローカルネットワーク内と外部の両方からクライアント(ThunderbirdおよびOutlook)から電子メールを送信できるようにしたいと考えています。


6
なぜ受け入れないのですか?
ルーク14年

回答:


58

TLSはsmtpセッションで暗号化を有効にするだけで、Postfixがメッセージの中継を許可されるかどうかに直接影響しません。

smtpd_recipient_restrictionsルールが一致しなかったため、リレー拒否メッセージが発生します。メッセージが通過するには、これらの条件のいずれかを満たす必要があります。

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    check_recipient_access hash:/etc/postfix/filtered_domains
    permit_mynetworks
    reject_unauth_destination

これらのルールを説明するには:

permit_sasl_authenticated

SASLを介して認証された送信者を許可します。これは、通常はブロックされているネットワーク外のユーザーを認証するために必要になります。

check_recipient_access

これにより、postfixは/ etc / postfix / filtered_domainsで受信者アドレスに基づいたルールを検索します。(ファイル名のファイル名から判断すると、おそらく特定のドメインをブロックしているだけです... gmail.comがそこにリストされているかどうかを確認しますか?)

permit_mynetworks

これにより、$ mynetworksで指定されたIP範囲に一致するIPアドレスによるホストが許可されます。投稿したmain.cfでは、$ mynetworksが127.0.0.1に設定されているため、サーバー自体によって生成された電子メールのみを中継します。

その構成に基づいて、メールクライアントはメッセージのリレーを許可される前にSMTP認証を使用する必要があります。SASLが使用しているデータベースがわかりません。これは/usr/lib/sasl2/smtpd.confで指定されます。おそらく仮想メールボックスと同じデータベースを使用するため、メールクライアントでSMTP認証を有効にしてすべて設定する必要があります。


14
smtpd_use_tls = no

TLSを無効にしたため、ローカルネットワークをに追加して承認する必要がありますmynetworks。例えば、

mynetworks = 192.168.1.0/24 127.0.0.0/8

これにより、ローカルネットワークからの送信のみが修正されます。ローカルネットワークの外部から電子メールを送信するには、TLS認証を機能させる必要があります。


ネットワークの外部から電子メールを送信できるようにする必要があるため、smtpd_use_tls = yesに設定しました。ただし、問題は解決しません。
ノアグッドリッチ

smtpd_tls_loglevelを3までバンプし、ログに興味深いものが表示されるかどうかを確認します(終了したら、忘れずに1または0にドロップしてください)。
PGS

また、smtp_use_tlsをnoに設定してみてください(外部メールの送信用)。参照postfix.org/postconf.5.html#smtp_use_tlsを
PGS

1
-1すべての人がtlsを無効にできるわけではないため。
jgifford25

3
私は彼がtlsを無効にするべきだと言っているのではありません。彼はすでに無効にしているので、mynetworksをセットアップする必要があると言っています。そして、完全な解決策はtlsを再び機能させることです。
pgs

6

mydestinationでdomain.comを見逃していると思います。なぜなら、デフォルトなので、設定relay_domains=$mydestination行を追加できるからです:

mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain

または:

relay_domains = $mydomain

service postfix restartpostfix confファイルを編集するたびに、postfixサーバー()を再起動することを忘れないでください。


ホストのリストに「localhost、localhost.localdomain」を追加するための+ 1(多くの場合、一部のシステムでは問題が発生しますが、他のシステムでは問題にならない理由は明らかではありません)
Iain Collins

2

Outlookでも同じ問題が発生し(dovecoteおよびpostfixバックエンドを使用)、解決策を探して構成ファイルを調整するのに2日間を費やしました。Outlookのメール設定の[送信]タブで[サーバーには認証が必要]をチェックするだけで、メッセージはGmailに送信されます。http://support.bluetie.com/node/440で設定を見つける方法の詳細な手順を参照してください


2

この問題はしばらくの間私を悩ませていました。server1.domain.comからserver2.domain.comに接続しようとしていました。

これが私がこれを修正した方法です-

#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

また、/ etc / hostsと/ etc / hostnameを適切に設定し、ネットワークの変更後に次を実行することを確認する必要があります-

sudo service networking restart

そして、後置構成の変更後の次の

sudo service postfix reload

0

私にとって:私はすでに存在していた事実localhostmynetworks関係なく追加する必要127.0.0.0/8がありました。そのため、次のようになります。

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.