postfix
Linux 컴퓨터(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 external
mydestination
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
값이 있으면yes
postfix는 수신자 주소를 다음으로 다시 씁니다.[이메일 보호됨](위의 mail.log에서 볼 수 있습니다) - 기본적으로 매개변수
mydestination
값$myhostname
또는 linuxmachine.example.com이 있으므로 postfix는 에 앨리어싱 맵을 적용합니다/etc/aliases
. - 후위 별칭[이메일 보호됨]에게[이메일 보호됨]그런 다음 Gmail 호스트로 보내십시오.
이제 구성 수정 후 이런 일이 발생합니다.
- Postfix는 픽업 서비스를 통해 이메일을 받습니다.
- 수신자에게는 도메인 부분과 (기본적으로) 매개 변수가 없기 때문에
append_at_myorigin
값이 있으면yes
postfix는 수신자 주소를 다음으로 다시 씁니다.[이메일 보호됨](위의 mail.log에서 볼 수 있습니다) - 이제 또는 linuxmachine.example.com을
mydestination
포함하지 않으므로$myhostname
postfix는 앨리어싱을 적용하지 않습니다./etc/aliases