
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