헤더에서 정규화를 허용하는 주소 다시 쓰기를 위해 구성된 접미사 인스턴스가 있습니다.
현재(필수?) 구성
관련 구성은 다음과 같습니다.
# Basic conf
myhostname = hostname.example.test
mydomain = example.test
mynetworks = 127.0.0.0/8,1.2.3.4/32
myorigin = $mydomain
mydestination =
# Rewrite options
append_at_myorigin = yes
local_header_rewrite_clients = permit_mynetworks
sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_classes = envelope_recipient, header_recipient
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
# restrictions (redacted for readability)
smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, permit
원하는 결과
나는 그것을 달성하고 싶습니다 :
- 127.0.0.1에서 이메일을 받으면 (예: root@$hostname)
From: root
으로 다시 작성됩니다.From: [email protected]
- 1.2.3.4에서 이메일을 받으면 (예: root@$mydomain)
From: root
으로 다시 작성됩니다.From: [email protected]
- 다른 사람으로부터 이메일을 받으면 이메일이
From: root
거부됩니다(제한이reject_non_fqdn_sender
적용되어 있으므로).
문제
변수는 $myorigin
수신 주소에 따라 달라야 하는데 그렇게 할 수 있는 방법을 찾을 수 없습니다. 지금까지 많은 솔루션을 시도했지만 실패했습니다.
실패한 시도...
127.0.0.1:smtp
나는 두 개의 smtp 마스터 서비스( with myorigin = $myhostname
및 192.168.1.2:smtp
with ) 를 만들려고 시도했지만 myorigin = $mydomain
myorigin 옵션은 프로세스 trivial-rewrites와 관련되어 있으므로 무시됩니다.
canonical
/ 에 대한 매핑은 virtual
사소한 재작성이 실행된 후에 발생하므로 사용할 수 없는 것 같습니다.
에 대한 매핑은 aliases
메시지가 로 전송될 것으로 판단된 후에 사용되므로 사용할 수 없는 것으로 보이지만 $mydestination
이 메시지는 다른 곳에 있습니다.
답변1
덕분에불안피드백 해결책을 찾았습니다.
솔루션 구성표
에 따르면Postfix 공식 문서다시 쓰기에 대한 마스터 프로세스 트리는 다음과 같습니다.
smtp --+--> cleanup --> rewrite --> [queue]
pickup --/
그래서 다음과 같이 localhost 전용 파이프라인을 만들었습니다.
192.168.1.2:smtp --+--> cleanup --> rewrite ------------+--> [queue]
127.0.0.1:smtp --+--> cleanup_local --> rewrite_local --/
pickup -----------/
구성
main.cf
다음은 외부 IP 구성을 나타내는 구성 입니다 .
# configure the global desiderata
# Basic conf (for display purpose, use your own configuration)
# myhostname = hostname.example.test
# mydomain = example.test
# mydestination =
# mynetworks = 127.0.0.0/8,1.2.3.4/32
# Rewrite options
myorigin = $mydomain
append_at_myorigin = yes
local_header_rewrite_clients = permit_mynetworks
sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_classes = envelope_recipient, header_recipient
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
# restrictions (redacted for readability)
smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, permit
master.cf
맞춤형 파이프라인을 사용한 구성은 다음과 같습니다 .
# add this for local smtp service
127.0.0.1:smtp inet n - n - - smtpd
-o myorigin=$myhostname
-o cleanup_service_name=cleanup_local
-o inet_interfaces=loopback-only
-o local_header_rewrite_clients=permit_inet_interfaces
# edit pickup sevice with this two options
pickup unix n - n 60 1 pickup
-o myorigin=$myhostname
-o cleanup_service_name=cleanup_local
# add this for local email cleanup
cleanup_local unix n - n - 0 cleanup
-o myorigin=$myhostname
-o rewrite_service_name=rewrite_local
# add this for local email basic rewrite
rewrite_local unix - - n - - trivial-rewrite
-o myorigin=$myhostname
-o local_header_rewrite_clients=permit_inet_interfaces
# Then for each public IP assigned to the machine, add smtp service like this
192.168.3.85:smtp inet n - n - - smtpd
# and remove default service smtp inet [..cut..] smtpd