Postfix는 발신 이메일을 대기열에 추가하지 않지만 모든 설정은 기본값입니다. 왜?

Postfix는 발신 이메일을 대기열에 추가하지 않지만 모든 설정은 기본값입니다. 왜?

Postfix, Roundcube 및 Dovecot을 사용하여 메일 서버를 설정했습니다. 거의 모두 잘 작동합니다.

우리 나라에는 inbox.lv라는 무료 이메일 서비스가 인기가 있습니다. 그리고 그들은 새로운 서버가 그들에게 이메일을 보내려고 할 때 먼저 그것을 10분 동안 그레이리스트에 올리고 서버가 이메일을 다시 보내도록 요구하는 스팸 방지 규칙을 설정했습니다. 그럴 수 있지.

그러나 Postfix를 사용하여 발신 이메일(Roundcube 또는 Thunderbird에서)을 보내는 경우 메시지를 대기열에 추가하지 않습니다. 대신 오류와 함께 즉시 반환됩니다. 로그 항목도 있습니다(가독성을 위해 줄바꿈/공백을 추가했습니다. IP 및 이메일 주소는 개인정보 보호를 위해 수정되었습니다).

May 31 23:17:18 21 postfix/smtpd[24814]: NOQUEUE: reject: RCPT from unknown[MY.IP.ADDRESS.HERE]: 
    450 4.1.1 <[email protected]>: Recipient address rejected: unverified address:
    host mx1.inbox.lv[194.152.32.74] said: 450 4.7.1 <unknown[SERVER.IP.ADDRESS.HERE]>:
    Client host rejected: greylisted, please retry in 597 seconds (in reply to RCPT TO command);
    from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.1.216]>

모든 대기열 설정은 기본값으로 유지됩니다. Postfix 버전은 2.10.1입니다.

왜 이런 일이 발생하며 Postfix가 메시지를 대기열에 추가하고 10분 안에 다시 시도하도록 하려면 어떻게 해야 합니까?

추가됨:Postfix 구성(익명화):

[root@myserver etc]# postconf mail_version
mail_version = 2.10.1

[root@myserver etc]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 100000000
milter_default_action = accept
mydestination = localhost
mydomain = mydomain.lv
myhostname = mydomain.lv
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_milters = inet:127.0.0.1:8891
smtpd_recipient_restrictions = reject_unverified_recipient
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mydomain.lv/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mydomain.lv/privkey.pem
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
virtual_mailbox_domains = d1.lv d2.lv d3.lv d4.lv
virtual_mailbox_limit = 0
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp

[root@myserver etc]# postconf -M
smtp       inet  n       -       n       -       -       smtpd
submission inet  n       -       n       -       -       smtpd
smtps      inet  n       -       n       -       -       smtpd
pickup     unix  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
retry      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache
[root@myserver etc]#

답변1

필수 조건으로 수신자에 대해 물어보기 위해 원격 대상에 연결하도록 postfix를 구성했습니다.~ 전에로컬 대기열에 무엇이든 허용합니다.

smtpd_recipient_restrictions =reject_unverified_recipient

일반 목적의 메일 서버에서는 어떤 경우에도 부적절합니다.하지만귀하가 관리하는 도메인 또는 귀하가 계약을 맺은 운영자의 도메인.

메일을 배달하지 않고 특정 사용자가 있는지 원격 서버에 문의하면 상당수의 서버가 사용자와 상호 작용하기를 원하지 않게 됩니다. 당신이 무엇을 보낼지 알기 전에 그들은 당신이 다음 피해자의 목록을 씻어내려는 스패머인지 아니면 메일을 배달하려는 사람인지 쉽게 알 수 없습니다.

해당 문제를 해결하고 원래 문제를 해결하기 위한 가장 간단한 변경 사항은 다음과 같습니다.

smtpd_recipient_restrictions =permit_sasl_authenticated,reject_unauth_destination, reject_unverified_recipient

제한 사항은 지정된 순서대로 처리되므로 인증된 사용자 및 관련 없는 릴레이 요청이 제외됩니다(어쨌든 거부됨). 이렇게 하면 reject_unverified_recipient들어오는 메시지에 대해 계속 적용할 수 있습니다(Dovecot은 아마도 지체 없이 주소를 확인할 것입니다). 그러나 아직 메일이 없는 수신자에 대해 원격 서버에 잔소리를 하지 않아도 됩니다. 그러나 사용자가 서로에게 메시지를 쓸 수 있도록 기능을 활성화하려면 이보다 더 복잡해야 합니다. postfix 문서의 ADDRESS_VERIFICATION_README 파일은... 오래되었지만 여전히 일반적인 개요를 제공해야 합니다.


나는 일반적으로 (적어도 최근에는 적합한 템플릿과 함께 제공되는) master.cf를 사용하여 부분적으로 분리된 smtpd 인스턴스를 설정하는 것을 권장합니다. 하나는 일반 인터넷 사용을 위한 포트 25에 하나는 필수 인증 사용자 제출을 위한 포트 465 중 하나입니다. 이렇게 하면 합리적으로 유지 관리 가능한 방식으로 서비스별로 서로 다른 규칙을 적용할 수 있으므로 릴레이 트래픽을 들어오는 트래픽과 다르게 처리하는 작업이 더욱 쉬워집니다.

관련 정보