Email

後綴別名userunknown在s和r在nķn這在nuser unknown問題

  • November 23, 2015

所以我需要在我的後綴伺服器上創建一個別名,它將所有郵件重定向到多個電子郵件地址。

我已經安裝並配置了 dovecot 的 postfix + postfixadmin,一切似乎都執行良好,伺服器能夠接收和發送電子郵件,創建新帳戶也是如此,但不能創建別名。

嘗試向新創建的別名(通過 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

並且電子郵件以幾乎相同的錯誤被退回。

問題是別名存在,我可以在 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/別名文件

# /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

雖然,沒有那條測試線,電子郵件甚至不會反彈

我可以確保正確配置了虛擬別名映射文件,並且正確指定了 mysql 詳細資訊,但如果需要,我可以根據要求提供它們。

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

dovecot   unix  -       n       n       -       -       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.cfreceive_override_options = no_address_mappings中設置了一個選項,該選項通常用於防止別名(和其他映射)在傳遞給內容過濾器之前被擴展。在他的例子中,沒有內容過濾器,這阻止了他的別名在 postfix 傳遞給 dovecot 之前被擴展。

引用自:https://serverfault.com/questions/581252