web-dev-qa-db-ja.com

Postfix-オープンリレー。構成しないようにするにはどうすればよいですか?

Postfixをセットアップしましたが、セットアップに問題があります。

サーバーにメールを送信していたときはいつでも、「Relaying Denied」というメールが拒否されたため、main.cf

mynetworks = 0.0.0.0/0
mynetworks_style = subnet

これでメールを送信でき、動作しますが、MXテストでは、これはオープンリレー(明らかに意図しない)であるとしています。

どうすればこれを解決できますか?誰でもドメインにメールを送信できるようにしたいのですが、構成がわかりません。

私はmynetworksを変更できることを知っていますが、これによりサーバーに電子メールを送信できるユーザーが制限されませんか?

2
Lock

mynetworksには、サーバーを使用して他のドメインにメールをリレーできる信頼できるユーザーのみが含まれている必要があります。それ以外の場合は、ご存じのようにオープンリレーです。内部ネットワークでRFC 1918アドレスを使用している場合は、192.168.0.0/16、10/8、または172.16.0.0/12に設定することをお勧めします。

ユーザーがサーバーにメールを送信できるかどうかを制御する設定には、mydestinationとvirtual_mailbox_domainsが含まれます。ドキュメント here または here を参照してください。

4
chow

あなたを開く問題は

mynetworks = 0.0.0.0/0

以下のどこかに原因があると思われます

smtpd_recipient_restrictions = ... permit_mynetworks ...

任意のIPからメールを送信できるようにする必要がある場合は、有効なユーザー/パスワードを見て、一般的なものはsaslであるメールを送信します

4
Mike

http://www.postfix.org/postconf.5.html#mynetworks に記載されているとおり:

mynetworks(デフォルト: "postconf -d"の出力を参照)
「見知らぬ人」よりも多くの権限を持つ「信頼された」リモートSMTPクライアントのリスト。

特に、「信頼された」SMTPクライアントはPostfixを介してメールをリレーすることができます。
postconf(5)マニュアルのsmtpd_recipient_restrictionsパラメータの説明を参照してください。

2
adaptr

自分だけの認証を使用するip:main.cf

smtpd_recipient_restrictions =
    permit_mynetworks
    reject_unauth_destination

ファイルを使用して、ip main.cfを保存します。

mynetworks = hash:/etc/postfix/network_table 

変更された場合はスクリプトを使用してIPを更新します(cronで実行)

#!/bin/bash
###
## sh /sx_sys/postfix_mynetwork_ip_checker.sh
LOGFILE="/var/log/smtp_relay.log"

curent_ip=$(Dig @exemple.com exemple.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }')
#echo $curent_ip

saved_ip=$(</etc/postfix/network_table )
#echo $saved_ip
if [ "$curent_ip OK" != "$saved_ip" && -n "$curent_ip"]; then
echo "$curent_ip OK" > "/etc/postfix/network_table"
postmap /etc/postfix/network_table
echo "$(date) smtp allow for $curent_ip" >> $LOGFILE 2>&1
mail -s "smtp allow for $curent_ip $(date)" [email protected] < /dev/null
fi
exit 0
0
Sanya Snex