52 votes

Postfix : Adresse du destinataire rejetée : Utilisateur inconnu dans la table des destinataires locaux

Lorsque j'essaie d'envoyer un e-mail sur mon serveur postfix à une adresse du même domaine (par exemple, si le nom d'hôte du serveur est mail.example.com et que j'essaie d'envoyer un e-mail à test@example.com), je reçois l'erreur suivante dans le journal et l'e-mail n'est pas livré : Adresse du destinataire rejetée : Utilisateur inconnu dans la table des destinataires locaux. Si j'envoie à une adresse sur un autre domaine, je n'ai pas de problèmes. Voici mon fichier /etc/postfix/main.cf :

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# l'ajout de .domain est une tâche du MUA.
append_dot_mydomain = no
# Décommentez la ligne suivante pour générer des avertissements de "courrier en retard"
#delay_warning_time = 4h
readme_directory = no
# Paramètres TLS
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# Voir /usr/share/doc/postfix/TLS_README.gz dans le paquet postfix-doc pour
# des informations sur l'activation SSL dans le client smtp.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
# adresse IP fictive
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

63voto

Jason Points 11332

Je sais que cette question est un peu ancienne, donc je suppose qu'elle a déjà été satisfaitement répondue.

J'ai rencontré exactement le même problème et j'ai pris du temps pour comprendre ce qui se passait. Je pense que ma situation était la même que celle de la question originale.

Postfix devrait transmettre tous les courriers à d'autres serveurs sur internet, il ne reçoit en fait aucun courrier pour les domaines. Ainsi, tout courrier envoyé à example.com doit être transféré au serveur de messagerie pour example.com. La solution, comme expliqué par techieb0y, est de supprimer $mydomain de la ligne :

mydestination = $mydomain, localhost.$mydomain, localhost

Cette ligne indique à postfix que tous les messages envoyés à $mydomain doivent être reçus et stockés sur ce serveur. Ce n'est pas ce que je veux, je veux que ces messages soient envoyés au véritable serveur de messagerie pour example.com. Une fois que j'ai réalisé cela et supprimé example.com, le courrier a fonctionné comme je m'y attendais. Je poste ceci au cas où cette explication pourrait aider quelqu'un d'autre qui tomberait sur cette question à l'avenir.

25voto

munaz Points 23

L'erreur est assez descriptive : le nom d'utilisateur de l'adresse e-mail cible (à gauche du signe @) ne peut pas être mappé à un utilisateur local sur le système (paramètres par défaut de postfix), ni à un domaine virtuel (car aucun n'est configuré par défaut). La décision d'essayer d'effectuer ce mappage est contrôlée par la liste des domaines dans 'mydestination' (plus tous les domaines virtuels). Si cette machine est en fait le MX principal d'un domaine, alors les utilisateurs qui n'existent pas ont un courrier rompu. Si cette boîte a seulement besoin d'envoyer des messages sortants, il suffit de supprimer le domaine cible de mydestination (en supprimant $mydomain de la liste) -- il continuera à accepter les messages directement pour utilisateur@hostname.domain.tld, mais les messages pour utilisateur@domain.tld passeront par le processus de recherche MX pour être livrés ailleurs. Vous pouvez raccourcir le processus en configurant une carte de transport (pour des domaines individuels), ou en configurant un smarthost (pour tout le courrier).

9voto

Julien Vehent Points 2907

Lorsque vous envoyez un message à votre domaine local, postfix est responsable de vérifier si le destinataire existe. Lorsque vous envoyez un e-mail à un autre domaine, postfix n'a pas cette responsabilité.

Vous devez soit avoir un utilisateur local appelé test

useradd -s /bin/bash -d /home/test -U test

soit, vous avez besoin d'une alias de test à un utilisateur local dans /etc/aliases

echo "test: root" >> /etc/aliases
postalias /etc/aliases

Et vous devriez être prêt.

4voto

Vincent BURLOT Points 31

J'ai eu cette erreur lors de l'envoi d'e-mails à une adresse alias. Postfix utilise /etc/aliases.db qui est généré à partir de /etc/aliases en exécutant la commande suivante. Cela a résolu l'erreur :

newaliases

2voto

cocostru Points 11

Pour le fichier /etc/postfix/main.cf, ajoutez la ligne local_recipient_maps =, juste en dessous, avec une valeur vide (par défaut, la valeur est active et non vide, c'est pourquoi il est nécessaire d'ajouter cette ligne avec une valeur vide)

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