(가상) 사용자가 자신이 소유한 "보낸 사람:" 주소를 사용해서만 보낼 수 있는 접미사 구성을 설정하려고 합니다. 그래서 나는 뛰어 reject_authenticated_sender_login_mismatch
들었다 smtpd_sender_restrictions
.
사용
query = SELECT goto FROM alias WHERE address='%s' and active=1;
내 경우에는 sender_login_maps.cf
내가 원하는 발신자 주소를 사용하여 메일을 보낼 수 있습니다 madeup@not_my_domain.com
.
하지만,
postmap -q "madeup@not_my_domain.com" mysql:/etc/postfix/sql/sender_login_maps.cf
예상대로 아무것도 반환되지 않습니다.
이제 쿼리를 다음으로 변경하면
SELECT goto FROM alias WHERE address='notinthedatabaseforsure' and active=1;
전혀 메일을 보낼 수 없습니다. 여태까지는 그런대로 잘됐다. 하지만 로그에 따르면
postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from...: 553 5.7.1 <[email protected]>:
Sender address rejected: not owned by user [email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>
에서 보내려고 해도 madeup@not_my_domain.com
. [email protected]
로그인 이름, [email protected]
수신자입니다.
올바른 설정에서는 다음과 같은 것을 기대할 수 있습니다.
postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from ...: 553 5.7.1 <madeup@not_my_domain.com>:
Sender address rejected: not owned by user [email protected]; from=<madeup@not_my_domain.com> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>
따라서 postfix는 로그인 이름을 사용하여 보낸 사람 주소에 관계없이 로그인 이름을 검색하는 것처럼 보입니다. 이는 앞서 언급한 쿼리를 사용하여 어떤 보낸 사람 주소로든 보낼 수 있는 이유를 설명합니다.
고쳐 쓰다:내 SQL 로그를 확인했는데 실제로 MySQL 서버는 madeup@not_my_domain.com
로그인 주소와 수신자 주소만 가져옵니다 [email protected]
.
master.cf와 main.cf의 smtps 섹션은 다음과 같습니다.
smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o tls_preempt_cipherlist=yes -o smtpd_tls_security_level=암호화 -o smtpd_sasl_auth_enable=예 -o smtpd_client_restrictions=permit_sasl_authenticated,rejected -o milter_macro_daemon_name=원산지 -o smtpd_sasl_type=비둘기 -o smtpd_sasl_security_options=noanonymous -o smtpd_relay_restrictions=reject_non_fqdn_recipient, recognition_unknown_recipient_domain, 허가_mynetworks, 허가_sasl_authenticated, 거부 -o milter_macro_daemon_name=원산지 -o cleanup_service_name=헤더 정리 커밋
내 네트워크 = 127.0.0.0/8 inet_interfaces = 모두 mydomain = 도메인 이름.com myhostname = mail.domain.com 내 출처 = $mydomain 내 목적지 = 릴레이 호스트 = smtpd_relay_restrictions=permit_mynetworks, allowed_sasl_authenticated,ject_unauth_destination, recognition_non_fqdn_recipient smtpd_recipient_restrictions = 내 네트워크를 허용하고, 허용_sasl_인증, Reject_non_fqdn_호스트 이름, FQDN이 아닌 발신자를 거부합니다. FQDN이 아닌 수신자를 거부합니다. 거부_unauth_대상, 거부_unauth_파이프라인, 잘못된 호스트 이름 거부 smtpd_sender 제한= FQDN이 아닌 발신자를 거부합니다. 알 수 없는 발신자 도메인 거부, 거부_unauth_파이프라인, accept_authenticated_sender_login_mismatch, allowed_sasl_authenticated smtpd_helo_required = 예 smtpd_helo_restrictions=permit_mynetworks deny_invalid_helo_hostname accept_non_fqdn_helo_hostname 거부_알려지지 않은_helo_호스트 이름 smtpd_data_restrictions=deny_unauth_pipelined smtpd_sasl_auth_enable = 예 smtpd_sasl_security_options = noanonymous,noplaintext smtpd_sasl_type = 비둘기장 smtpd_sasl_path = 개인/인증 postscreen_access_list=permit_mynetworks cidr:/etc/postfix/postscreen_access postscreen_blacklist_action=삭제 postscreen_greet_action = 내려놓으세요 postscreen_dnsbl_threshold = 2 postscreen_dnsbl_sites = dnsbl.sorbs.net*1, bl.spamcop.net*1, ix.dnsbl.manitu.net*2, zen.spamhaus.org*2 postscreen_dnsbl_action=삭제 virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf virtual_mailbox_maps = mysql:/etc/postfix/sql/accounts.cf virtual_mailbox_domains = mysql:/etc/postfix/sql/domains.cf 릴레이 도메인 = mysql:/etc/postfix/sql/relay_domains.cf smtpd_sender_login_maps = mysql:/etc/postfix/sql/sender_login_maps.cf virtual_uid_maps = 정적: 3000 virtual_gid_maps = 정적: 3000 virtual_mailbox_base = /home/vmail # NIS 조회 경고를 비활성화합니다. alias_maps=해시:/etc/aliases Append_mydomain = 아니요 수신자 구분자 = +
답변1
로그인한 사용자가 사용하기 전에 해야 할 [email protected]
방식으로만 보낼 수 있는 경우[email protected]
reject_sender_login_mismatch
permit_sasl_authenticated
smtpd_sender_restrictions =
# ... skip ...
reject_sender_login_mismatch
permit_sasl_authenticated
이 옵션기능 포함둘 다 reject_authenticated_sender_login_mismatch
의 합입니다
reject_unauthenticated_sender_login_mismatch
.
또한 사용자의 SQL 쿼리가 이메일(로그인이라고도 함)을 반환하는지 확인하세요. 이에 대해 postfix가 테스트를 실행합니다. 방금 반환 1
하거나 다른 "실제" 값을 반환하는 경우 예상대로 작동하지 않을 수 있습니다.
답변2
reject_authenticated_sender_login_mismatch
해결책은 현장 에 설치하는 것입니다 smtpd_client_restrictions
.
smtpd_client_restrictions
PS: 와는 다르다는 점에 유의하세요 smtpd_sender_restrictions
.