2 votes

Le balisage de l'adresse e-mail ne fonctionne pas avec les boîtes aux lettres virtuelles dans postfix

J'ai mon propre serveur de messagerie électronique, et j'aimerais pouvoir utiliser des balises d'adresse e-mail dynamiques. J'ai ajouté la directive recipient_delimiter = +- à ma configuration et redémarré postfix, mais maintenant si j'envoie un e-mail à bob+sometaghere@starbeamrainbowlabs.com par exemple, l'e-mail sera renvoyé avec l'erreur "Utilisateur inconnu". Si j'envoie unknownuser@starbeamrainbowlabs.com, l'e-mail est livré au compte webmaster comme prévu.

Voici ma configuration postfix :

 ## Ce sont tous les paramètres par défaut de Postfix que nous ne modifierons pas
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

## Les paramètres ci-dessous sont ce que nous modifions ou ajoutons

## Vos options d'identité du serveur de messagerie
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

## Paramètres smtpd personnalisés
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, # nous avertir au lieu de les bloquer réellement
    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

## Gérer les rejets : utiliser des erreurs permanentes 550 pour arrêter les tentatives
unknown_address_reject_code = 550
unknown_hostname_reject_code = 550
unknown_client_reject_code = 550

## paramètres TLS personnalisés
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

## Paramètres personnalisés de Dovecot et des utilisateurs virtuels
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

## Ce paramètre générera une erreur si vous redémarrez Postfix avant
## d'ajouter la définition de service appropriée dans master.cf, assurez-vous
## de vous en occuper !
dovecot_destination_recipient_limit = 1

## Paramètres personnalisés du milter
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

## Autres paramètres personnalisés du serveur de messagerie
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

À partir de /etc/postfix/master.cf, j'ai cela qui définit Dovecot :

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

J'ai aussi des définitions pour ifmail, bsmtp, scalemail-backend, mailman, uucp, scache, maildrop, et plusieurs autres, mais je ne suis pas tout à fait sûr de ce qu'ils font tous.

Est-ce que quelqu'un sait ce qui se passe ici et comment je peux réparer s'il vous plaît ?

J'utilise des boîtes aux lettres virtuelles.

2voto

sonofdelphi Points 463

Dans le fichier de configuration /etc/postfix/master.cf, assurez-vous que la définition du service dovecot, référencé par le paramètre de configuration virtual_transport, est configurée pour supprimer la partie d'extension de l'adresse du destinataire lors de l'appel à /usr/lib/dovecot/deliver.

Par exemple, cela peut ne pas fonctionner parce que ${recipient} sera étendu à bob+sometaghere@starbeamrainbowlabs.com par le service pipe(8) de Postfix :

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

Le macro ${recipient} devrait être remplacé par ${user}@${domain} dans ce scénario, de sorte que l'agent de livraison Dovecot reçoive la bonne adresse bob@starbeamrainbowlabs.com dans sa ligne de commande :

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

Référence: https://wiki1.dovecot.org/LDA/Postfix

0voto

sonofdelphi Points 463

Plusieurs caractères dans le paramètre recipient_delimiter semblent être pris en charge uniquement dans Postfix 2.11 ou plus récent. Assurez-vous que vous utilisez soit une version récente de Postfix, soit utilisez uniquement un caractère de délimitation.

De la page man de postconf (5):

recipient_delimiter (par défaut : vide)

L'ensemble de caractères qui peut séparer un nom d'utilisateur de son extension (exemple : user+foo), ou un nom de fichier .forward de son extension (exemple : .forward+foo). Fondamentalement, le logiciel tente user+foo et .forward+foo avant de tenter user et .forward. Cette implémentation reconnaît un caractère de délimitation et une extension par adresse e-mail ou nom de fichier .forward.

Lorsque l'ensemble recipient_delimiter contient plusieurs caractères (Postfix 2.11 et ultérieur), un nom d'utilisateur ou un nom de fichier .forward est séparé de son extension par le premier caractère qui correspond à l'ensemble recipient_delimiter.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X