Postifix: 로컬 이메일의 경우 myorigin=$myhostname을 사용하고 신뢰할 수 있는 네트워크의 경우 myorigin=$mydomain을 사용합니다.

Postifix: 로컬 이메일의 경우 myorigin=$myhostname을 사용하고 신뢰할 수 있는 네트워크의 경우 myorigin=$mydomain을 사용합니다.

헤더에서 정규화를 허용하는 주소 다시 쓰기를 위해 구성된 접미사 인스턴스가 있습니다.

현재(필수?) 구성

관련 구성은 다음과 같습니다.

# 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

원하는 결과

나는 그것을 달성하고 싶습니다 :

  1. 127.0.0.1에서 이메일을 받으면 (예: root@$hostname) From: root으로 다시 작성됩니다.From: [email protected]
  2. 1.2.3.4에서 이메일을 받으면 (예: root@$mydomain) From: root으로 다시 작성됩니다.From: [email protected]
  3. 다른 사람으로부터 이메일을 받으면 이메일이 From: root거부됩니다(제한이 reject_non_fqdn_sender적용되어 있으므로).

문제

변수는 $myorigin수신 주소에 따라 달라야 하는데 그렇게 할 수 있는 방법을 찾을 수 없습니다. 지금까지 많은 솔루션을 시도했지만 실패했습니다.

실패한 시도...

127.0.0.1:smtp나는 두 개의 smtp 마스터 서비스( with myorigin = $myhostname192.168.1.2:smtpwith ) 를 만들려고 시도했지만 myorigin = $mydomainmyorigin 옵션은 프로세스 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

관련 정보