postfix在一个中继后面用/ etc / aliases处理传入和传出的邮件

我试图在Linux机器上安装postfixDebian 8和Postfix 2.11)。 但是我有一些麻烦让/etc/aliases正常工作。

设置如下:MS Exchange服务器是实际的邮件服务器 – 它收到邮件并发送邮件,并且它与Linux机器位于同一本地networking中。 Linux机器上的Postfix确实使用这台Exchange机器作为中继主机来发送邮件。 这工作,所以例如mail external@gmail.com到达。

现在在Exchange上存在一个被转发到Linux机器的邮件地址。 在/etc/aliases我有一个别名,这是一个程序pipe道,因为邮件去这个地址包含一些代码,应该由程序parsing。

为了使这个工作,我必须改变main.cfmydestination设置。 但是一旦我这样做了,postfix在使用别名/etc/aliases时会停止转发邮件。 只有input长名称的作品。 这是我的configuration(我从零开始):

 # 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 

使用这种configuration传入邮件的pipe道工作,但发送邮件到别名不起作用:

 # /etc/alias # none of the entries are actual users on the linux machine! #works when mail to parser@example.com comes from external through Exchange to Linux parser: |/home/user/programname # command "mail external" does not work! It sends to external@linuxmachine" external: externalmail@gmail.com 

如果我在main.cf注释掉mydestination ,那么mail external发送一封邮件到externalmail@gmail.com (到达),但是到parser@example.com邮件不会通过pipe道发送。 所以,相反的。

main.cf/etc/aliasesinput什么信息才能够使用短名称从我的Linux机器发送邮件,同时能够接收邮件到pipe道? 我只想要在Linux机器上parsing一个特殊的地址,并且linux用户能够使用短名称作为“luxory”(而不必input完整的电子邮件地址)将邮件发送到选定的地址。

更新: 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输出时,使用mydestination设置如上所示的mail external邮件(邮件别名):

 Jun 19 10:45:27 linuxmachine postfix/smtp[26425]: 6DFE02003AD: to=<external@linuxmachine.example.com>, 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 <20150619084527.6DFE02003AD@linuxmachine.example.com> [InternalId=162319] Queued mail for delivery) 

更新3,在根据build议的答案更改mydestination之后, mail.info日志在执行mail external时显示以下行:

 Jun 19 16:07:31 linuxmachine postfix/smtp[2299]: B562720039C: to=<externalmail@gmail.com>, 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 <20150619140728.B359620039E@linuxmachine.example.com> [InternalId=162971] Queued mail for delivery) 

显而易见的解决scheme是在mydestination参数中放置$myhostname或linuxmachine.example.com。

说明

在configuration修改之前,这里是通过mail external发送电子邮件后的后台事件

  • Postfix通过取件服务接收电子邮件。
  • 由于收件人没有域名部分,并且(默认情况下)参数append_at_myorigin值为yes ,则postfix会将收件人地址重写为external@linuxmachine.example.com(您可以在上面的mail.log中看到它)
  • 默认情况下,参数mydestination值为$myhostname或linuxmachine.example.com,所以postfix在/etc/aliases应用别名映射。
  • Postfix别名external@linuxmachine.example.com到external@gmail.com然后发送给gmail主机

现在configuration修改后,这是发生了什么

  • Postfix通过取件服务接收电子邮件。
  • 由于收件人没有域名部分,并且(默认情况下)参数append_at_myorigin值为yes ,则postfix会将收件人地址重写为external@linuxmachine.example.com(您可以在上面的mail.log中看到它)
  • 现在mydestination不包含$myhostname或linuxmachine.example.com,所以postfix将不会在/etc/aliases应用/etc/aliases