Scr*_*tch 0 email email-server postfix alias
所以我需要在我的 postfix 服务器上创建一个别名,它将所有邮件重定向到多个电子邮件地址。
我有 postfix + postfixadmin 并配置了 dovecot,一切似乎都运行良好,服务器能够接收电子邮件和发送电子邮件,创建新帐户也是如此,但不能创建别名。
尝试向新创建的别名(通过 postfixadmin 创建)发送电子邮件时,在 /var/log/mail.log 中,我看到以下内容
Mar 11 14:24:53 somedomain postfix/pipe[28581]: B1FEDBC0899: to=<testing@somedomain.com>, 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=<20140311102453.3B549BC0BE4@somedomain.com>
Mar 11 14:24:53 somedomain postfix/bounce[28583]: B1FEDBC0899: sender non-delivery notification: 3B549BC0BE4
Run Code Online (Sandbox Code Playgroud)
电子邮件被退回几乎相同的错误。
问题是别名存在,我可以在 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
Run Code Online (Sandbox Code Playgroud)
以及一些您可能感兴趣的信息
myhostname = somedomain.com
mydestination = localhost.$mydomain, localhost, mail.somedomain.com
relayhost =
Run Code Online (Sandbox Code Playgroud)
/etc/别名文件
# /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
Run Code Online (Sandbox Code Playgroud)
始终,没有那条测试线,电子邮件甚至不会反弹
我可以确保虚拟别名映射文件配置正确,并且 mysql 详细信息在那里正确指定,但如果需要,我可以根据要求提供它们。
在 /etc/postfix/master.cf 中添加以下行
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Run Code Online (Sandbox Code Playgroud)
在 /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'
Run Code Online (Sandbox Code Playgroud)
在 /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
Run Code Online (Sandbox Code Playgroud)
我的想法不多了,可能是什么问题,所以非常感谢任何帮助,谢谢!
如上所述,问题在于 dovecot 不知道别名是谁,因为它实际上不是电子邮件帐户。postfix 应该告诉它要将其交付到哪个帐户。您的 mysql_virtual_alias_maps(如果用户在虚拟域中)或 /etc/aliases 没有扩展,并且别名(而不是实际邮箱)正在传递给 dovecot。
编辑:事实上,Sreatch 的 main.cf 中设置了一个选项receive_override_options = no_address_mappings
,通常用于防止别名(和其他映射)在传递给内容过滤器之前被扩展。在他的例子中,没有内容过滤器,这阻止了他的别名在 postfix 传递给 dovecot 之前被扩展。
归档时间: |
|
查看次数: |
10145 次 |
最近记录: |