
Postfix をセットアップしましたが、セットアップに問題があります。
サーバーにメールを送信するたびに、「中継が拒否されました」というメッセージが表示されてメールが拒否されたため、次の内容を変更しましたmain.cf
。
mynetworks = 0.0.0.0/0
mynetworks_style = subnet
電子メールの送信はできるようになりましたが、MX テストではオープン リレーであると表示されます (明らかに意図したものではありません)。
どうすればこの問題を解決できますか? 誰でも自分のドメインにメールを送信できるようにしたいのですが、設定がよくわかりません。
を変更できることは知っていますmynetworks
が、そうするとサーバーにメールを送信できるユーザーが制限されるのではないですか?
答え1
あなたを悩ませる問題は
mynetworks = 0.0.0.0/0
おそらく下のどこかにリストされているでしょう
smtpd_recipient_restrictions = ... permit_mynetworks ...
任意のIPからメールを送信できるようにする必要がある場合は、メールを送信するためのユーザー/パスワードを有効にするだけです。一般的なのはsaslです。
答え2
答え3
文書に記載されている通りhttp://www.postfix.org/postconf.5.html#mynetworks:
mynetworks (デフォルト: 「postconf -d」の出力を参照)
「他人」よりも多くの権限を持つ「信頼できる」リモート SMTP クライアントのリスト。特に、「信頼できる」SMTP クライアントは Postfix を介してメールを中継できます。
postconf(5)マニュアルのsmtpd_recipient_restrictionsパラメータの説明を参照してください。
答え4
自分の 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