web-dev-qa-db-fra.com

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 sur le 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 à [email protected]), j'obtiens le erreur suivante dans le journal et l'e-mail n'est pas remis: Recipient address rejected: User unknown in local recipient table. Si j'envoie à une adresse sur un autre domaine, je n'ai aucun problème. Voici mon fichier /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
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
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
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 =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
32
Tai Squared

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

Je viens d'avoir ce même problème, et il m'a fallu un certain temps pour comprendre ce qui se passait. Je pense que ma situation était la même que la question initiale.

Postfix devrait relayer tous le courrier vers d'autres serveurs sur Internet, il ne reçoit pas de courrier pour aucun domaine. Ainsi, tout courrier envoyé à example.com doit être transféré au serveur de messagerie pour example.com. La solution, comme expliqué par techieb0y, consiste à 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 le serveur this. Ce n'est pas ce que je veux, je veux que ces messages soient envoyés au serveur de messagerie réel pour example.com. Une fois que j'ai réalisé cela et supprimé example.com, le courrier a fonctionné comme prévu. Je poste ceci au cas où cette explication aiderait quelqu'un d'autre qui tomberait sur cette question à l'avenir.

44
chmac

L'erreur est assez auto-descriptive: le nom d'utilisateur de l'e-mail cible (à gauche du signe @) ne peut pas être mappé à un utilisateur local sur le système (paramètres de suffixe par défaut), ni à un domaine virtuel (car aucun n'est configuré hors du boîte). La décision d'essayer et 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 du courrier cassé. Si cette boîte doit uniquement envoyer des messages sortants, il suffit de supprimer le domaine cible de mydestination (en supprimant $ mydomain de la liste) - elle acceptera toujours les messages directement pour [email protected], mais les messages pour user @ domain.tld passera par le processus de recherche MX pour une livraison ailleurs. Vous pouvez raccourcir le processus en configurant une carte de transport (pour des domaines individuels) ou en configurant un smarthost (pour tous les messages).

19
techieb0y

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

Vous devez soit avoir un utilisateur local appelé test

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

ou, vous avez besoin d'un alias de test vers un utilisateur local dans/etc/aliases

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

Et vous devriez être prêt.

5
Julien Vehent

J'ai donc un problème similaire et je ne l'ai pas encore tout à fait compris, mais cela devrait vous faire avancer dans la bonne direction:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

Regardez la section "Postfix sur un client nul" - je pense que c'est ce que vous voulez. J'ai également essayé de définir le paramètre local_recipient_maps comme spécifié sur le site Web de postfix à la page: LOCAL_RECIPIENT_README.html

Les deux liens devraient faire ce que nous recherchons ici, mais je ne peux pas les faire fonctionner. Lorsque je fais la configuration complète du client null, tenter de telnet afin d'envoyer un e-mail SMTP de test ne fonctionne pas. J'obtiens "telnet: se connecter à l'adresse 97.74.92.30: connexion refusée". Lors de la configuration de la carte des destinataires locaux, la recherche dans la commande RCPT TO: ne donne pas de message d'erreur comme avant, mais lors de l'envoi du courrier électronique (semble normal), aucun courrier électronique n'est réellement envoyé, et il y a une erreur dans le maillog:

"550-Mailbox unknown. Soit aucune boîte aux lettres n'est associée à ce nom 550, soit vous n'êtes pas autorisé à le voir. 550 5.1.1 Utilisateur inconnu"

Faites-moi savoir si vous avez plus de chance.

1
jeffthink

J'ai eu cette erreur lors de l'envoi d'e-mails à un 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
0
George Valkov