Comment corriger le 'Accès relais refusé' de Postfix?

54

Ce matin, afin de corriger un problème d'incompatibilité de nom dans le certificat de sécurité, j'ai suivi les étapes recommandées dans Comment réparer le serveur de messagerie SSL? , mais maintenant, lorsque je tente d'envoyer un courrier électronique à partir d'un client (dans ce cas, le client est Windows Mail), le message d'erreur suivant s'affiche.

L'adresse e-mail rejetée était "[email protected]". Sujet 'Ceci est un test. ', Compte:' mail.domain.com ', Serveur:' mail.domain.com ', Protocole: SMTP, Réponse du serveur:' 554 5.7.1: Accès par relais refusé ', Port: 25, Sécurisé (SSL): Non , Erreur du serveur: 554, Numéro d'erreur: 0x800CCC79

Modifier : je peux toujours récupérer des courriels à partir de ce compte et envoyer des courriels à d'autres comptes du même domaine. Je ne peux tout simplement pas envoyer d'e-mails à des destinataires extérieurs à notre domaine.

J'ai essayé de désactiver TLS mais pas de dés, je reçois toujours la même erreur.

Lorsque je vérifie le fichier mail.log, je vois ce qui suit.

Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

Le fichier main.cfressemble à ceci:

#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#

#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

#
# Some common configuration parameters;
#

inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop

#
# Receiving messages parameters;
#

mydestination = localhost, company 
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf

#
# Delivering local messages parameters;
#

mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"

biff = no

alias_database = hash:/etc/aliases

local_recipient_maps =

#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf


#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain =

broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
        permit_sasl_authenticated
        permit_mynetworks

smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination

En passant, mon employeur veut pouvoir envoyer des courriels de clients (Thunderbird et Outlook) à la fois à partir de notre réseau local et à l'extérieur de celui-ci.

Noah Goodrich
la source
6
Pourquoi n'acceptez-vous pas?
Rook

Réponses:

58

TLS n'active que le cryptage sur la session smtp et n'affecte pas directement si Postfix sera autorisé ou non à relayer un message.

Le message de relais refusé se produit car les règles smtpd_recipient_restrictions ne correspondaient pas. Une de ces conditions doit être remplie pour que le message puisse passer:

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    check_recipient_access hash:/etc/postfix/filtered_domains
    permit_mynetworks
    reject_unauth_destination

Pour expliquer ces règles:

permit_sasl_authenticated

autorise les expéditeurs authentifiés via SASL. Cela sera nécessaire pour authentifier les utilisateurs en dehors de votre réseau qui sont normalement bloqués.

check_recipient_access

Cela fera que postfix cherchera dans / etc / postfix / filter_domains des règles basées sur l'adresse du destinataire. (À en juger par le nom de fichier indiqué, il s’agit probablement de bloquer des domaines spécifiques ... Vérifiez si gmail.com est répertorié ici?)

permit_mynetworks

Cela autorisera les hôtes par adresse IP correspondant aux plages IP spécifiées dans $ mynetworks. Dans le fichier main.cf que vous avez posté, $ mynetworks a été défini sur 127.0.0.1, de sorte que seuls les courriers électroniques générés par le serveur seront relayés.

En fonction de cette configuration, votre client de messagerie devra utiliser l'authentification SMTP avant de pouvoir relayer des messages. Je ne suis pas sûr de la base de données utilisée par SASL. Cela est spécifié dans /usr/lib/sasl2/smtpd.conf Il utilise probablement la même base de données que vos boîtes aux lettres virtuelles. Vous devriez donc pouvoir activer l'authentification SMTP dans votre client de messagerie et être configuré.

Brandon
la source
14
smtpd_use_tls = no

Vous avez désactivé TLS. Vous devez maintenant autoriser votre réseau local en l'ajoutant à mynetworks. Par exemple,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Cela corrigera l'envoi depuis votre réseau local uniquement. Pour envoyer des courriers électroniques en dehors de votre réseau local, vous devez activer l'authentification TLS.

les pages
la source
J'ai défini smtpd_use_tls = yes car nous devons pouvoir envoyer des emails en dehors du réseau. Cependant, le problème persiste.
Noah Goodrich
Bump smtpd_tls_loglevel jusqu'à 3 et voir si quelque chose d'intéressant apparaît dans les journaux (et n'oubliez pas de le ramener à 1 ou à 0 lorsque vous avez terminé).
Pages
Essayez également de définir smtp_use_tls sur non (pour l'envoi d'e-mails externes). Voir postfix.org/postconf.5.html#smtp_use_tls
pgs le
1
-1 car tout le monde ne peut pas désactiver les tls.
jgifford25
3
Je ne dis pas qu'il devrait désactiver tls; Je dis que, puisqu'il l'a déjà désactivé, il doit ensuite configurer mynetworks. Et que la solution complète est de faire fonctionner les tâches à nouveau.
pgs
6

Je pense que vous manquez domain.com dans mydestination, car la valeur par défaut relay_domains=$mydestinationvous permet de vous annexer à la configuration de la ligne:

mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain

ou:

relay_domains = $mydomain

N'oubliez pas de redémarrer le serveur postfix ( service postfix restart) chaque fois que vous éditez le fichier de configuration postfix.

Tour
la source
+ 1 pour l'ajout de "localhost, localhost.localdomain" à la liste des hôtes (souvent un problème sur certains systèmes, il est difficile de comprendre pourquoi ce n'est pas le cas sur d'autres)
Iain Collins -
2

J'avais le même problème dans Outlook (avec pigeonnier et postfix) et j'ai passé deux jours à chercher une solution et à peaufiner mes fichiers de configuration. Tout ce que je devais faire était de cocher "Le serveur requiert une authentification" dans l'onglet "Sortant" des paramètres de messagerie dans Outlook et mes messages sont maintenant envoyés à gmail. Voir les instructions détaillées pour savoir comment trouver le paramètre ici http://support.bluetie.com/node/440 .

Dee
la source
2

Ce problème me dérangeait depuis un moment. J'essayais de me connecter depuis server1.domain.com à server2.domain.com.

Voici comment j'ai résolu ça -

#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Vous devez également vous assurer que vous avez défini correctement les fichiers / etc / hosts et / etc / hostname et que vous exécutez les opérations suivantes après les modifications apportées à la mise en réseau -

sudo service networking restart

et les suivants après les changements de configuration postfix

sudo service postfix reload
A23
la source
0

Pour moi: je devais ajouter localhostà mynetworksquel que soit le fait 127.0.0.0/8était déjà là. Alors, maintenant il semble:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Putnik
la source