Postfix の「リレーアクセスが拒否されました」を修正するにはどうすればいいですか?

Postfix の「リレーアクセスが拒否されました」を修正するにはどうすればいいですか?

今朝、セキュリティ証明書の名前の不一致の問題を修正するために、メールサーバーの SSL を修正するにはどうすればいいですか?しかし、クライアント (この場合、クライアントは Windows メール) から電子メールを送信しようとすると、次のエラーが表示されます。

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

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

TLS を完全に無効にしてみましたが、ダメで、同じエラーが引き続き発生します。

ファイルを確認するとmail.log、次のようになります。

Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], 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 protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> 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, [email protected], 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) からの電子メールをローカル ネットワーク内と外部の両方から送信できるようにしたいと考えています。

答え1

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

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

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

答え2

smtpd_use_tls = no

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

mynetworks = 192.168.1.0/24 127.0.0.0/8

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

答え3

デフォルトでは、mydestination に domain.com が含まれていないと思います。relay_domains=$mydestinationそのため、次の行を設定に追加できます。

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

または:

relay_domains = $mydomain

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

答え4

私は Outlook (dovecote と postfix バックエンドを使用) でも同じ問題を抱えており、解決策を探して設定ファイルを調整するのに 2 日を費やしました。Outlook のメール設定の送信タブで「サーバーは認証が必要」をチェックするだけで、メッセージは Gmail に送信されるようになりました。設定を見つける方法の詳細な手順については、こちらをご覧ください。http://support.bluetie.com/node/440

関連情報