Ce matin, afin de corriger un problème avec une incompatibilité de nom dans le certificat de sécurité, j'ai suivi les étapes recommandées de Comment réparer SSL du serveur de messagerie?, mais maintenant, lorsque j'essaie d'envoyer un e-mail à partir d'un client (dans ce cas, le client est Windows Mail), je reçois l'erreur suivante.
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 relais refusé ', Port: 25, Sécurisé (SSL): Non , Erreur serveur: 554, Numéro d'erreur: 0x800CCC79
Éditer: Je peux toujours récupérer les e-mails de ce compte et j'envoie des e-mails à d'autres comptes du même domaine. Je ne peux tout simplement pas envoyer d'e-mails à des destinataires en dehors de notre domaine.
J'ai essayé de désactiver complètement TLS mais pas de dés, j'obtiens 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
Fichier main.cf
ressemble à ça:
#
# 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
Par ailleurs, mon employeur souhaite pouvoir envoyer des e-mails de clients (Thunderbird et Outlook) à la fois depuis notre réseau local et hors de celui-ci.
TLS active simplement 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 correspondent pas. L'une de ces conditions doit être remplie pour permettre au message de 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
Ainsi, postfix recherchera dans/etc/postfix/filters_domains des règles basées sur l'adresse du destinataire. (À en juger par le nom du fichier sur le nom du fichier, il ne fait probablement que bloquer des domaines spécifiques ... Vérifiez si gmail.com y figure?)
permit_mynetworks
Cela permettra aux hôtes par adresse IP qui correspondent aux plages IP spécifiées dans $ mynetworks. Dans le fichier main.cf que vous avez publié, $ mynetworks a été défini sur 127.0.0.1, il ne relaiera donc que les e-mails générés par le serveur lui-même.
En fonction de cette configuration, votre client de messagerie devra utiliser l'authentification SMTP avant d'être autorisé à relayer des messages. Je ne sais pas quelle base de données SASL utilise. Cela est spécifié dans /usr/lib/sasl2/smtpd.conf Vraisemblablement, il utilise également la même base de données que vos boîtes aux lettres virtuelles, vous devriez donc être en mesure d'activer l'authentification SMTP dans votre client de messagerie et être tout défini.
smtpd_use_tls = no
Vous avez désactivé TLS, vous devez donc 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 e-mails depuis l'extérieur de votre réseau local, vous devrez faire fonctionner l'authentification TLS.
Je pense que vous manquez domain.com dans ma destination, car la valeur par défaut relay_domains=$mydestination
, vous pouvez donc ajouter votre configuration à 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 modifiez le fichier conf de postfix.
J'ai eu le même problème dans Outlook (avec le pigeonnier et le backend postfix) et j'ai passé deux jours à chercher une solution et à peaufiner mes fichiers de configuration. Tout ce que je devais faire était de vérifier "Le serveur nécessite une authentification" dans l'onglet Sortant dans les paramètres de messagerie dans Outlook et mes messages sont maintenant envoyés à gmail. Voir les instructions détaillées sur la façon de trouver le paramètre ici http://support.bluetie.com/node/44 .
Ce problème me dérangeait depuis un moment. J'essayais de me connecter de server1.domain.com à server2.domain.com.
Voici comment j'ai corrigé cela -
#/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 correctement défini/etc/hosts et/etc/hostname et assurez-vous que vous exécutez les éléments suivants après les modifications de mise en réseau -
Sudo service networking restart
et ce qui suit après les changements de configuration de postfix
Sudo service postfix reload
Pour moi: j'ai dû ajouter localhost
à mynetworks
indépendamment du fait 127.0.0.0/8
était déjà là. Alors maintenant, ça ressemble:
mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost