web-dev-qa-db-fra.com

Postfix NOQUEUE: rejeter: RCPT depuis inconnu

J'ai créé une application basée sur le Web, mais lorsqu'elle essaie d'envoyer un e-mail, elle échoue. Postfix enregistre les éléments suivants dans son mail.log:

    postfix/smtpd[22261]: warning: hostname srv.eastinc.nl does not resolve to address 192.168.3.101
    postfix/smtpd[22261]: connect from unknown[192.168.3.101]
    postfix/smtpd[22261]: NOQUEUE: reject: RCPT from unknown[192.168.3.101]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<domain.eastinc.nl>
    postfix/smtpd[22261]: disconnect from unknown[192.168.3.101]

Je suis sûr que srv.eastinc.nl se résout en 192.168.3.101, car nslookup le dit. Configuration de Postfix:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
delay_warning_time = 2h
home_mailbox = Maildir/
inet_interfaces = all
mailbox_size_limit = 0
mydestination = eastinc.nl, mail.eastinc.nl, srv.eastinc.nl, localhost.eastinc.nl, localhost
myhostname = mail.eastinc.nl
mynetworks = localhost 192.168.3.101 127.0.0.1 srv.eastinc.nl
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp.ziggo.nl:25
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

Si je comprends bien, 192.168.3.101 et srv.eastinc.nl devraient pouvoir relayer le courrier via Postfix. Des idées sur la façon de faire fonctionner cela?

6
Steve

Vous avez les restrictions suivantes dans votre configuration:

smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain

permit_sasl_authenticated

Autorisez la demande lorsque le client est authentifié avec succès via le protocole RFC 4954 (AUTH).

rejeter_unauth_destination

Rejetez la demande, sauf si l'une des conditions suivantes est remplie:

  • Postfix est un transitaire de messagerie: le domaine RCPT TO résolu correspond à $ relay_domains ou à un sous-domaine de celui-ci, et ne contient aucun routage spécifié par l'expéditeur (utilisateur @ ailleurs @ domaine),

  • Postfix est la destination finale: le domaine RCPT TO résolu correspond à $ mydestination, $ inet_interfaces, $ proxy_interfaces, $ virtual_alias_domains ou $ virtual_mailbox_domains et ne contient aucun routage spécifié par l'expéditeur (utilisateur @ ailleurs @ domaine).

rejeter_unknown_sender_domain

Rejetez la demande lorsque Postfix n'est pas la destination finale de l'adresse de l'expéditeur et que le domaine MAIL FROM n'a 1) aucun DNS MX et aucun enregistrement DNS A, ou 2) un enregistrement MX mal formé tel qu'un enregistrement avec un nom d'hôte MX de longueur nulle ( Postfix version 2.3 et versions ultérieures).

La réponse est spécifiée avec le paramètre unknown_address_reject_code (par défaut: 450), unknown_address_tempfail_action (par défaut: defer_if_permit) ou 550 (nullmx, Postfix 3.0 et versions ultérieures). Voir les descriptions des paramètres respectifs pour plus de détails.

Donc, ma supposition est la suivante: celui qui se connecte à partir de l'hôte 192.168.3.101 (est-ce le serveur lui-même?) Envoie des messages sans authentification (il n'y a rien à propos de l'authentification dans le journal). Vous avez donc besoin de la restriction suivante pour ce faire:

permit_mynetworks

Autorisez la demande lorsque l'adresse IP du client correspond à n'importe quel réseau ou adresse réseau répertoriée dans $ mynetworks.

Ajoutez smtpd_recipient_restrictions Avec permit_mynetworks.

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Documents officiels: ACCESS README

[~ # ~] udp [~ # ~]

Parfois, c'est vraiment mauvais pour permit_mynetworks Parce que tout hôte de $mynetworks Peut envoyer des courriers sans authentification.

Il est donc préférable de soumettre des e-mails via smtp avec l'authentification de votre application et de ne pas utiliser les fonctions sendmail()/mail()

12
Darigaaz