/etc/aliases를 사용하여 들어오고 나가는 메일을 처리하기 위한 릴레이 뒤의 접미사

/etc/aliases를 사용하여 들어오고 나가는 메일을 처리하기 위한 릴레이 뒤의 접미사

postfixLinux 컴퓨터(Postfix 2.11이 설치된 Debian 8)에서 설정을 시도하고 있습니다 . 하지만 /etc/aliases올바르게 작동하는 데 몇 가지 문제가 있습니다 .

설정은 다음과 같습니다. MS Exchange 서버는 실제 메일 서버입니다. 메일을 수신하고 전송하며 Linux 시스템과 동일한 로컬 네트워크에 있습니다. Linux 시스템의 Postfix는 이 Exchange 시스템을 릴레이 호스트로 사용하여 메일을 보냅니다. 이것은 작동하므로 예를 들어 도착합니다.mail [email protected]

이제 Exchange에는 Linux 시스템으로 전달되는 메일 주소가 있습니다. 여기에는 /etc/aliases프로그램에 대한 파이프인 별칭이 있습니다. 왜냐하면 이 주소로 가는 메일에는 프로그램에서 구문 분석해야 하는 일부 코드가 포함되어 있기 때문입니다.

이 작업을 수행하려면 mydestination에서 설정을 변경해야 합니다 main.cf. 하지만 그렇게 하자마자 Postfix는 별칭이 /etc/aliases사용된 메일 중계를 중단합니다. 긴 이름을 입력하는 것만 가능합니다. 내 구성은 다음과 같습니다(0에서 시작함).

# main.cf
# our internet domain name (the thing after the "@")
mydomain = example.com

# this is the critical setting
mydestination = linuxmachine, 192.168.1.200, $mydomain

# IP of Exchange
relayhost = 192.168.1.100

# so that addresses look correct
masquerade_domains = $mydomain

# in order to make the pipe programm work with correct permission
default_privs = myuser

이 구성을 사용하면 수신 메일의 파이프 연결이 작동하지만 별칭으로 메일을 보내는 것은 작동하지 않습니다.

# /etc/alias
# none of the entries are actual users on the linux machine!

#works when mail to [email protected] comes from external through Exchange to Linux
parser: |/home/user/programname 

# command "mail external" does not work! It sends to external@linuxmachine"
external: [email protected] 

행을 주석 처리하면 mydestination( 도착한) 메일을 보내지 main.cf만 들어오는 메일은 파이프를 통해 전송되지 않습니다. 그래서, 그 반대입니다.mail external[email protected][email protected]

짧은 이름을 사용하여 Linux 시스템에서 메일을 보내고 동시에 파이프로 메일을 받을 수 있으려면 main.cf무엇 을 입력해야 합니까 ? /etc/aliases내가 원하는 것은 Linux 시스템에서 특수 주소가 구문 분석되고 Linux 사용자가 전체 이메일 주소를 입력하는 대신 "luxory"라는 짧은 이름을 사용하여 선택한 주소로 메일을 보낼 수 있다는 것입니다.

업데이트: postconf -n출력:

config_directory = /etc/postfix
default_privs = myuser
masquerade_domains = $mydomain
mydestination = linuxmachine, 192.168.1.200, $mydomain
mydomain = example.com
relayhost = 192.168.1.100

업데이트 2: 위와 같이 설정하여 (별칭으로 메일 보내기) /var/log/mail.info작업을 수행할 때 의 출력:mail externalmydestination

Jun 19 10:45:27 linuxmachine postfix/smtp[26425]: 6DFE02003AD: to=<[email protected]>, orig_to=<external>, relay=192.168.1.100[192.168.1.100]:25, delay=0.24, delays=0/0/0/0.24, dsn=2.6.0, status=sent (250 2.6.0 <[email protected]> [InternalId=162319] Queued mail for delivery)

업데이트 3은 mydestination제안된 답변에 따라 변경한 후 mail.info다음을 수행할 때 로그에 다음 줄을 표시합니다 mail external.

Jun 19 16:07:31 linuxmachine postfix/smtp[2299]: B562720039C: to=<[email protected]>, orig_to=<external>, relay=192.168.1.100[192.168.1.100]:25, delay=2.6, delays=0/0/0/2.5, dsn=2.6.0, status=sent (250 2.6.0 <[email protected]> [InternalId=162971] Queued mail for delivery)

답변1

확실한 해결책은 매개변수 $myhostname에 linuxmachine.example.com을 넣는 것입니다 mydestination.

설명

구성 수정 전, 이메일을 보낸 후의 백그라운드 이벤트는 다음과 같습니다.mail external

  • Postfix는 픽업 서비스를 통해 이메일을 받습니다.
  • 수신자에게는 도메인 부분과 (기본적으로) 매개 변수가 없기 때문에append_at_myorigin값이 있으면 yespostfix는 수신자 주소를 다음으로 다시 씁니다.[이메일 보호됨](위의 mail.log에서 볼 수 있습니다)
  • 기본적으로 매개변수mydestination$myhostname또는 linuxmachine.example.com이 있으므로 postfix는 에 앨리어싱 맵을 적용합니다 /etc/aliases.
  • 후위 별칭[이메일 보호됨]에게[이메일 보호됨]그런 다음 Gmail 호스트로 보내십시오.

이제 구성 수정 후 이런 일이 발생합니다.

  • Postfix는 픽업 서비스를 통해 이메일을 받습니다.
  • 수신자에게는 도메인 부분과 (기본적으로) 매개 변수가 없기 때문에append_at_myorigin값이 있으면 yespostfix는 수신자 주소를 다음으로 다시 씁니다.[이메일 보호됨](위의 mail.log에서 볼 수 있습니다)
  • 이제 또는 linuxmachine.example.com을 mydestination포함하지 않으므로 $myhostnamepostfix는 앨리어싱을 적용하지 않습니다./etc/aliases

관련 정보