Postfix - 오픈 릴레이. 그렇지 않도록 구성하는 방법은 무엇입니까?

Postfix - 오픈 릴레이. 그렇지 않도록 구성하는 방법은 무엇입니까?

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

mynetworks에는 서버를 사용하여 메일을 다른 도메인으로 릴레이할 수 있는 신뢰할 수 있는 사용자만 포함되어야 합니다. 그렇지 않으면 오픈 릴레이입니다. 내부 네트워크에서 RFC 1918 주소를 사용하는 경우 192.168.0.0/16, 10/8 또는 172.16.0.0/12로 설정할 수 있습니다.

사람들이 서버에 메일을 보낼 수 있는지 여부를 제어하는 ​​설정에는 mydestination 및 virtual_mailbox_domains가 포함됩니다. 문서를 읽어보세요.여기또는여기.

답변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

관련 정보