Heute Morgen habe ich, um ein Problem mit einer Namensinkongruenz im Sicherheitszertifikat zu beheben, die empfohlenen Schritte aus How to fix mail server SSL? befolgt, aber jetzt erhalte ich beim Versuch, eine E-Mail von einem Client aus zu senden (in diesem Fall ist der Client Windows Mail), die folgende Fehlermeldung.
Die abgelehnte E-Mail-Adresse war '[email protected]'. Betreff 'Dies ist ein Test. ', Konto: 'mail.domain.com', Server: 'mail.domain.com', Protokoll: SMTP, Server Antwort: '554 5.7.1 [email protected]: Relay-Zugriff verweigert', Port: 25, Sicher(SSL): No, Serverfehler: 554, Fehlernummer: 0x800CCC79
Bearbeiten: Ich kann immer noch E-Mails von diesem Konto abrufen, und ich kann E-Mails an andere Konten in derselben Domäne senden. Ich kann nur keine E-Mails an Empfänger außerhalb unserer Domäne senden.
Ich habe versucht, TLS ganz zu deaktivieren, aber ohne Erfolg, ich erhalte immer noch denselben Fehler.
Wenn ich die Datei mail.log
prüfe, sehe ich folgendes.
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
Die Datei main.cf
sieht wie folgt aus:
#
# 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
Nebenbei bemerkt, möchte mein Arbeitgeber in der Lage sein, E-Mails von Clients (Thunderbird und Outlook) sowohl innerhalb als auch außerhalb unseres lokalen Netzwerks zu versenden.
TLS ermöglicht nur die Verschlüsselung der SMTP-Sitzung und hat keinen direkten Einfluss darauf, ob Postfix eine Nachricht weiterleiten darf oder nicht.
Die verweigerte Weiterleitung der Nachricht erfolgt, weil die smtpd_recipient_restrictions-Regeln nicht erfüllt wurden. Eine dieser Bedingungen muss erfüllt sein, damit die Nachricht weitergeleitet werden kann:
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
Um diese Regeln zu erklären:
permit_sasl_authenticated
erlaubt authentifizierte Absender durch SASL. Dies ist notwendig, um Benutzer außerhalb Ihres Netzwerks zu authentifizieren, die normalerweise blockiert werden.
check_recipient_access
Dies veranlasst Postfix, in /etc/postfix/filtered_domains nach Regeln zu suchen, die auf der Empfängeradresse basieren. (Nach dem Dateinamen zu urteilen, werden wahrscheinlich nur bestimmte Domänen blockiert... Prüfen Sie, ob gmail.com dort aufgelistet ist...)
permit_mynetworks
Damit werden Hosts mit IP-Adressen zugelassen, die den in $mynetworks angegebenen IP-Bereichen entsprechen. In der von Ihnen geposteten main.cf wurde $mynetworks auf 127.0.0.1 gesetzt, so dass nur vom Server selbst generierte E-Mails weitergeleitet werden.
Basierend auf dieser Konfiguration muss Ihr Mail-Client die SMTP-Authentifizierung verwenden, bevor er Nachrichten weiterleiten darf. Ich bin mir nicht sicher, welche Datenbank SASL verwendet. Diese wird in /usr/lib/sasl2/smtpd.conf angegeben. Vermutlich wird dieselbe Datenbank wie für Ihre virtuellen Postfächer verwendet, so dass Sie die SMTP-Authentifizierung in Ihrem Mail-Client aktivieren können und alles bereit ist.
smtpd_use_tls = no
Da Sie TLS deaktiviert haben, müssen Sie nun Ihr lokales Netzwerk autorisieren, indem Sie es zu mynetworks
hinzufügen. Zum Beispiel,
mynetworks = 192.168.1.0/24 127.0.0.0/8
Damit wird der Versand nur von Ihrem lokalen Netz aus zugelassen. Um E-Mails von außerhalb Ihres lokalen Netzwerks zu versenden, müssen Sie die TLS-Authentifizierung aktivieren.
Ich denke, Sie vermissen Ihre domain.com in mydestination, weil die Voreinstellung relay_domains=$mydestination
, so können Sie Sie die Konfiguration der Zeile anhängen:
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
oder:
relay_domains = $mydomain
Vergessen Sie nicht, den Postfix-Server neu zu starten (service postfix restart
), wenn Sie die Datei postfix conf bearbeiten.