Email

電子郵件地址標記不適用於 postfix 中的虛擬郵箱

  • February 23, 2020

我有自己的電子郵件伺服器,我希望能夠使用動態電子郵件地址標記。我將recipient_delimiter = +-指令添加到我的配置並重新啟動後綴,但現在如果我發送電子郵件bob+sometaghere@starbeamrainbowlabs.com,電子郵件將被退回,並顯示錯誤“未知使用者”。如果我發送電子郵件unknownuser@starbeamrainbowlabs.com,電子郵件將按預期發送到webmaster帳戶。

這是我的後綴配置:

## These are all default Postfix settings that we won't change
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
inet_interfaces = all
mailbox_command = /usr/lib/dovecot/deliver -c
   /etc/dovecot/conf.d/01-mail-stack-delivery.conf -m "${EXTENSION}"
mailbox_size_limit = 0
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +-
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_random_source = dev:/dev/urandom

## Settings below this line are things we're modifying or adding

## Your mail server identity options
myhostname = mail.starbeamrainbowlabs.com
#mydestination = localhost, starbeamrainbowlabs.com,
#    localhost.starbeamrainbowalabs.com
# 89.107.190.141 = cross-code central
mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128 89.107.190.141

## Customized smtpd paramters
smtpd_banner = $myhostname ESMTP
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,
   check_helo_access hash:/etc/postfix/helo_access
   #reject_non_fqdn_helo_hostname,
   reject_invalid_helo_hostname,
   #reject_unknown_helo_hostname,
   #warn_if_reject, # warn us instead of actually blocking them
   permit
smtpd_sender_restrictions = permit_mynetworks,
   permit_sasl_authenticated,
   #reject_unknown_sender_domain,
   reject_sender_login_mismatch
smtpd_recipient_restrictions = permit_mynetworks,
   permit_sasl_authenticated,
   reject_unknown_client_hostname,
   reject_unknown_sender_domain,
   reject_unknown_recipient_domain,
   reject_unauth_pipelining,
   reject_unauth_destination, 
   reject_invalid_hostname,
   reject_non_fqdn_sender
smtpd_sender_login_maps = $virtual_mailbox_maps

## Dealing with rejection: use permanent 550 errors to stop retries
unknown_address_reject_code = 550
unknown_hostname_reject_code = 550
unknown_client_reject_code = 550

## customized TLS parameters
smtpd_tls_ask_ccert = yes
smtpd_tls_cert_file = /etc/ssl/private/chain/www-mail.starbeamrainbowlabs.com.pem
smtpd_tls_key_file = /etc/ssl/private/key/decrypted/www-mail.starbeamrainbowlabs.com.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_ciphers = high
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s


## Customized Dovecot and virtual user-specific settings
canonical_maps = hash:/etc/postfix/canonical
home_mailbox = Maildir/
message_size_limit = 104857600
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_domains = hash:/etc/postfix/virtual-mailbox-domains
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox-users
virtual_transport = dovecot

## This setting will generate an error if you restart Postfix before
## adding the appropriate service definition in master.cf, so make
## sure to get that taken care of!
dovecot_destination_recipient_limit = 1

## Customized milter settings
milter_default_action = accept
milter_connect_macros = j {daemon_name} v {if_name} _
non_smtpd_milters = $smtpd_milters
smtpd_milters = inet:127.0.0.1:11444 unix:/opendkim/opendkim.sock

## Other customized mail server settings
default_destination_concurrency_limit = 5
disable_vrfy_command = yes
relay_destination_concurrency_limit = 1
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may

/etc/postfix/master.cf,我有這個定義的 Dovecot:

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

我也有 , , , , , , 和一堆其他的定義ifmailbsmtpscalemail-backendmailmanuucp完全scache確定maildrop它們都做了什麼。

有誰知道這裡發生了什麼以及我該如何解決它?

我正在使用虛擬郵箱。

/etc/postfix/master.cf配置文件中,確保配置參數dovecot引用的服務定義virtual_transport設置為在呼叫/usr/lib/dovecot/deliver.

例如,這可能不起作用,因為${recipient}它將被bob+sometaghere@starbeamrainbowlabs.comPostfix 的pipe(8)服務擴展為:

dovecot   unix  -       n       n       -       -       pipe
 flags=DRhu user=dovecot:dovecot argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

在這種情況下,${recipient}宏應替換為${user}@${domain},以便 Dovecot 傳遞代理bob@starbeamrainbowlabs.com在其命令行中接收正確的地址:

dovecot   unix  -       n       n       -       -       pipe
 flags=DRhu user=dovecot:dovecot argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${domain}

參考:https ://wiki1.dovecot.org/LDA/Postfix

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