Postfix别名问题

所以我需要在我的postfix服务器上创build一个别名,将所有邮件redirect到多个邮件地址。

我有postfix + postfixadmin与dovecot和configuration,似乎一切正常,服务器能够接收电子邮件和发送电子邮件,所以创build新的帐户,但不是别名。

当试图发送电子邮件到新创build的别名(通过postfixadmin创build),在/var/log/mail.log我看到以下

Mar 11 14:24:53 somedomain postfix/pipe[28581]: B1FEDBC0899: to=<[email protected]>, relay=dovecot, delay=0.68, delays=0.63/0/0/0.05, dsn=5.1.1, status=bounced (user unknown) Mar 11 14:24:53 somedomain postfix/cleanup[26467]: 3B549BC0BE4: message-id=<[email protected]> Mar 11 14:24:53 somedomain postfix/bounce[28583]: B1FEDBC0899: sender non-delivery notification: 3B549BC0BE4 

和电子邮件是反弹与几乎相同的错误。

问题是,别名存在,我可以看到它的MySQL数据库和postfixadmin界面。

 root@someserver:~# postconf | grep alias alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases allow_mail_to_commands = alias, forward allow_mail_to_files = alias, forward expand_owner_alias = no local_recipient_maps = proxy:unix:passwd.byname $alias_maps newaliases_path = /usr/bin/newaliases proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps unknown_virtual_alias_reject_code = 550 virtual_alias_domains = $virtual_alias_maps virtual_alias_expansion_limit = 1000 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf virtual_alias_recursion_limit = 1000 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf 

以及一些可能有趣的信息

 myhostname = somedomain.com mydestination = localhost.$mydomain, localhost, mail.somedomain.com relayhost = 

/ etc / aliases文件

 # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root clamav: root testing: info 

如果没有testing线,电子邮件甚至不会反弹回来

我可以保证虚拟别名映射文件configuration正确,并且mysql的详细信息在那里是正确的,但如果需要的话,我可以提供它们。

在/etc/postfix/master.cf中添加以下行

 dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} 

在/etc/dovecot/dovecot-sql.conf中

 driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=somepassword default_pass_scheme = MD5 password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT maildir, 125 AS uid, 125 AS gid, CONCAT('maildir:storage=', FLOOR( quota / 1024 ) ) AS quota FROM mailbox WHERE username = '%u' AND active = '1' 

在/etc/postfix/mysql_virtual_alias_maps.cf中

 user = postfixadmin password = somepassword hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' #expansion_limit = 100 

我的想法已经不多了,有什么问题可以帮忙,非常感谢,谢谢!

正如所指出的那样,问题是dovecot不知道别名是谁,因为它实际上不是一个电子邮件帐户。 后缀应该是告诉它将其交付给哪个帐户。 您的mysql_virtual_alias_maps(如果用户在虚拟域中)或/ etc / aliases不扩展,并且别名(而不是实际邮箱)正在传递给dovecot。

编辑:实际上,在Screatch的main.cf中有一个选项设置了receive_override_options = no_address_mappings ,它经常用来防止别名(和其他映射)在被传递给内容filter之前被展开。 在他的情况下,没有内容filter,这是为了防止他的别名在postfix传递给鸽鸽交付之前被扩展。

2015年11月更新。

同样的问题,别名不起作用。

所以我去了/etc/postfix/main.cf并改变(默认):

 local_recipient_maps = unix:passwd.byname 

通过

 local_recipient_maps = unix:passwd.byname $alias_maps 

现在它工作