Postfix는 "from:" 주소를 확인하기 위해 sender_login_maps를 사용하지 않습니다.

Postfix는 "from:" 주소를 확인하기 위해 sender_login_maps를 사용하지 않습니다.

(가상) 사용자가 자신이 소유한 "보낸 사람:" 주소를 사용해서만 보낼 수 있는 접미사 구성을 설정하려고 합니다. 그래서 나는 뛰어 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_mismatchpermit_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_restrictionsPS: 와는 다르다는 점에 유의하세요 smtpd_sender_restrictions.

관련 정보