Postfixをセットアップしましたが、セットアップに問題があります。
サーバーにメールを送信していたときはいつでも、「Relaying Denied」というメールが拒否されたため、main.cf
:
mynetworks = 0.0.0.0/0
mynetworks_style = subnet
これでメールを送信でき、動作しますが、MXテストでは、これはオープンリレー(明らかに意図しない)であるとしています。
どうすればこれを解決できますか?誰でもドメインにメールを送信できるようにしたいのですが、構成がわかりません。
私はmynetworks
を変更できることを知っていますが、これによりサーバーに電子メールを送信できるユーザーが制限されませんか?
あなたを開く問題は
mynetworks = 0.0.0.0/0
以下のどこかに原因があると思われます
smtpd_recipient_restrictions = ... permit_mynetworks ...
任意のIPからメールを送信できるようにする必要がある場合は、有効なユーザー/パスワードを見て、一般的なものはsaslであるメールを送信します
http://www.postfix.org/postconf.5.html#mynetworks に記載されているとおり:
mynetworks(デフォルト: "postconf -d"の出力を参照)
「見知らぬ人」よりも多くの権限を持つ「信頼された」リモートSMTPクライアントのリスト。特に、「信頼された」SMTPクライアントはPostfixを介してメールをリレーすることができます。
postconf(5)マニュアルのsmtpd_recipient_restrictionsパラメータの説明を参照してください。
自分だけの認証を使用する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