Postfix: adresse du destinataire rejetée: utilisateur inconnu dans la table des destinataires locaux

30

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 suivant dans le journal et l'e - mail n'est pas livré: 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
Tai Squared
la source
J'ai rencontré cela auparavant lorsque les serveurs n'ont pas les bons noms d'hôte définis pour une raison quelconque. Votre domaine est-il configuré avec mail.example.comvotre enregistrement MX? Est-ce vraiment ce serveur mail.example.com?
Bert

Réponses:

42

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 les courriers vers d'autres serveurs sur Internet, il ne reçoit en fait aucun 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 ce serveur. 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.

chmac
la source
18

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.

techieb0y
la source
1
vous m'avez sauvé la journée, je devenais fou ... pourquoi ai-je deux utilisateurs pour moi, tstaerk et thorsten;)
Thorsten Staerk
5

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.

Julien Vehent
la source
Existe-t-il un moyen de contourner cette vérification pour ne pas avoir à créer un utilisateur pour chaque personne à qui j'enverrais un e-mail? Je ne veux pas utiliser ce serveur comme notre serveur de messagerie principal, juste pour envoyer des e-mails sortants à partir d'une application lorsque des erreurs se produisent. Je préférerais ne pas avoir à mettre à jour le serveur chaque fois que je veux ajouter un nouveau destinataire pour l'e-mail de l'application.
Tai Squared
Supposons que vous souhaitiez envoyer un e-mail à '[email protected]', ce que vous devez faire est de vous assurer que votre suffixe local n'est PAS responsable de 'domainz.com', sinon il essaiera de valider l'utilisateur localement. Donc, définissez la directive 'mydomain' sur quelque chose de différent, comme 'mydomain = local.server' et postfix enverra votre e-mail au serveur responsable de 'domainz.com'
Julien Vehent
1

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.

jeffthink
la source