後綴別名userunknown在s和r在nķn這在nuser unknown問題
所以我需要在我的後綴伺服器上創建一個別名,它將所有郵件重定向到多個電子郵件地址。
我已經安裝並配置了 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.cf
receive_override_options = no_address_mappings
中設置了一個選項,該選項通常用於防止別名(和其他映射)在傳遞給內容過濾器之前被擴展。在他的例子中,沒有內容過濾器,這阻止了他的別名在 postfix 傳遞給 dovecot 之前被擴展。