내 메일 서버는 도메인 example.com으로 설정되어 있습니다. 내 example.com의 CNAME인 하위 도메인 listed.example.com을 만들었습니다. example.com에서 이메일을 보내면 example.com에 유효한 SPF, DMARC 및 DKIM이 있습니다. 그러면 CNAME이 동일한 값을 얻고 SPF의 IP가 변경이 필요하지 않고 모두 동일한 서버에서 실행되므로 값이 동일하게 유효하므로 모든 것이 정상입니다.
example.org라는 다른 도메인이 있습니다. 또한 SPF, DMARC 및 DKIM이 적용됩니다. 두 도메인 모두 자신이 유효한 발신자가 될 수 있습니다. 그 외에도, 그렇지 않은지 확인하기 위해 두 서버의 IP를 서로의 SPF에 추가했습니다. 나는 그것이 필요하지 않다는 것을 안다.
내 가상 앨리어스 맵에는 다음이 있습니다.
[email protected] [email protected]
즉, 메일이 도착한다.[이메일 보호됨]외부 도메인(example.org)으로 전달됩니다. 이제 상황이 흥미로워집니다. example.com 내에서 메일을 전달하면 잘 작동합니다.[이메일 보호됨]. 그런데 example.org로 전달하면 어떤 이유에서인지 반환 경로가 비어 있습니다. 따라서 클라이언트의 HELO 도메인을 사용하여 SPF를 확인할 수 있습니다. 다른 도메인(예: example.uk.co)에서 메일을 보내면 example.uk.co의 SPF 레코드를 확인하여 해당 도메인이 list.example.com에 대한 유효한 발신자인지 확인합니다. 당연히 아니지. 추가하면 이메일이 제대로 수신됩니다. 하지만 이제 SPF 조회는 동적이므로 Gmail에서 메일을 보낼 때 Gmail에서 SPF를 확인합니다. Gmail에서 메일을 보낼 때 example.uk.co에서 mailmaster 메시지를 받지 못합니다. 따라서 다른 메일 서버에 구성할 수 있는 곳이 없습니다. 그렇지 않으면 나는 항상 포스트마스터 메시지를 받지만 다음 주소로 이메일을 보낼 때만 받기 때문입니다.[이메일 보호됨]저는 해당 도메인을 관리하기 때문에 해당 도메인에서 우체국장 이메일을 실제로 볼 수 있습니다. Gmail이나 그와 유사한 것이 표시되지 않습니다.
내 결론은 이것에 근거합니다.
- https://knowledge.ondmarc.redsift.com/en/articles/1739881-spf-record-troubleshooting-and-top-tips
- http://www.open-spf.org/action_browse_id_FAQ/Common_mistakes_revision_26/#helo
물론 제가 설명을 잘못 읽지 않았다면요. 하지만 내lists.example.com에는 example.com의 CNAME이기 때문에 SPF가 있습니다.
내 spf가 _spf.example.com에 있으므로 MX 도메인을 명시적으로 지정합니다. 이를 통해 DNS 조회에서 올바른 IP를 얻을 수 있습니다. 추가 설정을 위해 example.org에 A/AAAA 레코드를 추가하여 이것이 사실이 아닌지 확인했습니다. example.org에는 이를 배제하기 위해 example.com이라는 IP도 있습니다.
v=spf1 exp=explain.%{d} +mx:example.com +a:example.org -all
따라서 내 생각에는 반환 경로가 비어 있기 때문에 이 문제가 발생하는 것 같습니다. 다른 것일 수도 있나요? 이 문제를 해결하는 방법을 아는 사람이 있나요?
내 가상 별칭 매핑 파일:
[email protected] [email protected]
내 가상 메일함 도메인:
example.com OK
lists.example.com OK
내 main.cf:
canonical_maps = hash:$config_directory/canonical
compatibility_level = 3.6
delay_warning_time = 1d
disable_vrfy_command = yes
enable_long_queue_ids = yes
inet_interfaces = localhost, 1.2.3.4
lmtp_tls_protocols = >=TLSv1.3
maximal_queue_lifetime = 5w
message_size_limit = 50000000
milter_default_action = accept
mydomain = example.com
myhostname = mx1.$mydomain
mynetworks = localhost
myorigin = $mydomain
non_smtpd_milters = $smtpd_milters
policyd-spf_time_limit = 1h
recipient_delimiter = +
relocated_maps = hash:$config_directory/relocated
smtp_dns_support_level = dnssec
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1
smtp_tls_mandatory_ciphers = high
smtp_tls_mandatory_exclude_ciphers = EXP, LOW, MEDIUM, aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES, ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256, MD5, SHA
smtp_tls_security_level = dane
smtp_tls_session_cache_database = btree:$data_directory/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP
smtpd_client_auth_rate_limit = 20
smtpd_client_connection_rate_limit = 20
smtpd_client_message_rate_limit = 20
smtpd_client_new_tls_session_rate_limit = 20
smtpd_client_recipient_rate_limit = 20
smtpd_client_restrictions = reject_unknown_client_hostname permit_mynetworks permit_sasl_authenticated reject_rbl_client zen.spamhaus.org reject_rbl_client bl.spamcop.net
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_etrn_restrictions = permit_mynetworks reject
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks reject_invalid_helo_hostname
smtpd_milters = inet:localhost:8891 inet:localhost:8893
smtpd_recipient_restrictions = reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_recipient_domain reject_unlisted_recipient reject_unauth_pipelining permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org reject_rbl_client zen.spamhaus.org reject_rbl_client bl.spamcop.net check_policy_service unix:private/policyd-spf check_policy_service inet:localhost:10023 check_policy_service inet:localhost:2223
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_sender_login_maps = $virtual_alias_maps
smtpd_sender_restrictions = reject_unknown_sender_domain reject_non_fqdn_sender
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/smtp.$mydomain/fullchain.pem
smtpd_tls_dh1024_param_file = $config_directory/dh/2023-04.pem
smtpd_tls_key_file = /etc/letsencrypt/live/smtp.$mydomain/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:$data_directory/smtpd_scache
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
tls_ssl_options = NO_COMPRESSION NO_RENEGOTIATION
unknown_address_reject_code = 554
unknown_client_reject_code = 554
unknown_hostname_reject_code = 554
virtual_alias_maps = hash:$config_directory/virtual_alias
virtual_gid_maps = static:997
virtual_mailbox_base = /srv/vmail
virtual_mailbox_domains = hash:$config_directory/virtual_mailbox_domains
virtual_mailbox_maps = hash:$config_directory/virtual_mailbox
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:997
답변1
문제는 이메일이 다음 주소로 전송된다는 것입니다.[이메일 보호됨]반환 경로가 비어 있기 때문입니다. 이로 인해 이메일을 보낼 때 SPF 검사에서 클라이언트의 HELO 도메인을 사용하게 되지만, 이 도메인은 항상 Lists.example.com에 대해 유효한 발신자가 아닙니다. 이 문제를 해결하려면lists.example.com에서 example.org로 전달되는 이메일에 대한 반환 경로가 올바르게 설정되도록 이메일 서버의 구성을 업데이트해야 할 수 있습니다. 특정 이메일 서버 설정에 대한 자세한 정보가 없으면 더 구체적인 지침을 제공하기 어렵습니다.