Wie korrigiere ich Postfix '' Relay-Zugriff verweigert '?

54

Um ein Problem mit einer Namensinkongruenz im Sicherheitszertifikat zu beheben , habe ich heute Morgen die empfohlenen Schritte unter So beheben Sie SSL des Mailservers? Befolgt. Beim Versuch, eine E-Mail von einem Client aus zu senden (in diesem Fall Windows Mail), wird die folgende Fehlermeldung angezeigt.

Die abgelehnte E-Mail-Adresse war "[email protected]". Betreff 'Dies ist ein Test. ', Konto:' mail.domain.com ', Server:' mail.domain.com ', Protokoll: SMTP, Serverantwort:' 554 5.7.1: Relay-Zugriff verweigert ', Port: 25, Sicher (SSL): Nein , Serverfehler: 554, Fehlernummer: 0x800CCC79

Bearbeiten : Ich kann weiterhin E-Mails von diesem Konto abrufen und E-Mails an andere Konten in derselben Domäne senden. Ich kann nur keine E-Mails an Empfänger außerhalb unserer Domain senden.

Ich habe versucht, TLS zu deaktivieren, aber keine Würfel, ich erhalte immer noch den gleichen Fehler.

Wenn ich die Datei überprüfe mail.log, 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.cfsieht so 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

Als Randnotiz möchte mein Arbeitgeber in der Lage sein, E-Mails von Kunden (Thunderbird und Outlook) sowohl innerhalb als auch außerhalb unseres lokalen Netzwerks zu senden.

Noah Goodrich
quelle
6
Warum nimmst du nicht an?
Turm

Antworten:

58

TLS aktiviert nur die Verschlüsselung in der SMTP-Sitzung und hat keinen direkten Einfluss darauf, ob Postfix eine Nachricht weiterleiten darf oder nicht.

Die Meldung "Weiterleitung verweigert" wird angezeigt, weil die Regeln für "smtpd_recipient_restrictions" nicht übereinstimmen. Eine dieser Bedingungen muss erfüllt sein, damit die Nachricht gesendet 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

Ermöglicht authentifizierte Absender über SASL. Dies ist erforderlich, um Benutzer außerhalb Ihres Netzwerks zu authentifizieren, die normalerweise gesperrt sind.

check_recipient_access

Dadurch sucht postfix in / etc / postfix / filters_domains nach Regeln, die auf der Empfängeradresse basieren. (Nach dem Dateinamen zu urteilen, blockiert es wahrscheinlich nur bestimmte Domains ... Überprüfen Sie, ob gmail.com dort aufgeführt ist?)

permit_mynetworks

Dies ermöglicht Hosts nach IP-Adresse, die mit den in $ mynetworks angegebenen IP-Bereichen übereinstimmen. In der von Ihnen geposteten main.cf wurde $ mynetworks auf 127.0.0.1 gesetzt, sodass nur vom Server selbst generierte E-Mails weitergeleitet werden.

Basierend auf dieser Konfiguration muss Ihr E-Mail-Client die SMTP-Authentifizierung verwenden, bevor er Nachrichten weiterleiten kann. Ich bin nicht sicher, welche Datenbank SASL verwendet. Dies ist in /usr/lib/sasl2/smtpd.conf angegeben. Vermutlich wird auch dieselbe Datenbank wie für Ihre virtuellen Postfächer verwendet, sodass Sie die SMTP-Authentifizierung in Ihrem E-Mail-Client aktivieren und alle Einstellungen vornehmen sollten.

Brandon
quelle
14
smtpd_use_tls = no

Sie haben TLS deaktiviert, daher müssen Sie Ihr lokales Netzwerk jetzt autorisieren, indem Sie es hinzufügen mynetworks. Zum Beispiel,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Dadurch wird das Senden nur von Ihrem lokalen Netzwerk aus behoben. Zum Senden von E-Mails von außerhalb Ihres lokalen Netzwerks benötigen Sie eine funktionierende TLS-Authentifizierung.

pgs
quelle
Ich habe smtpd_use_tls = yes gesetzt, weil wir E-Mails von außerhalb des Netzwerks senden können müssen. Das Problem besteht jedoch weiterhin.
Noah Goodrich
Setzen Sie smtpd_tls_loglevel auf 3 und prüfen Sie, ob in den Protokollen etwas Interessantes auftaucht (und denken Sie daran, es wieder auf 1 oder 0 zu setzen, wenn Sie fertig sind).
Seiten
Setzen Sie smtp_use_tls auch auf no (zum Senden externer E-Mails). Siehe postfix.org/postconf.5.html#smtp_use_tls
pgs
1
-1 weil nicht jeder tls deaktivieren kann.
jgifford25
3
Ich sage nicht, dass er tls deaktivieren sollte; Ich sage, da er es bereits deaktiviert hat, muss er mynetworks einrichten. Und dass die vollständige Lösung darin besteht, tls wieder zum Laufen zu bringen.
S.
6

Ich denke, Sie vermissen Sie domain.com in mydestination, weil die Standardeinstellung relay_domains=$mydestination, so dass Sie Sie die Konfiguration der Zeile anhängen können:

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

oder:

relay_domains = $mydomain

Vergessen Sie nicht, den Postfix-Server ( service postfix restart) jedes Mal neu zu starten, wenn Sie die Postfix-Konfigurationsdatei bearbeiten.

Wtower
quelle
+ 1 für das Hinzufügen von "localhost, localhost.localdomain" zur Liste der Hosts (häufig ein Problem auf einigen Systemen, nicht klar, warum es auf anderen kein Problem ist)
Iain Collins
2

Ich hatte das gleiche Problem in Outlook (mit Taubenschlag und Postfix-Backend) und verbrachte zwei Tage damit, nach einer Lösung zu suchen und meine Konfigurationsdateien zu optimieren. Alles, was ich tun musste, war die Option "Server erfordert Authentifizierung" auf der Registerkarte "Ausgehend" in den E-Mail-Einstellungen in Outlook zu aktivieren. Meine Nachrichten werden jetzt an Google Mail gesendet. Eine ausführliche Anleitung zum Auffinden der Einstellung finden Sie hier http://support.bluetie.com/node/440 .

Dee
quelle
2

Dieses Problem nervte mich eine Weile. Ich habe versucht, eine Verbindung von server1.domain.com zu server2.domain.com herzustellen.

So habe ich das behoben -

#/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

Sie müssen auch sicherstellen, dass Sie / etc / hosts und / etc / hostname richtig eingestellt haben, und dass Sie nach Netzwerkänderungen Folgendes ausführen:

sudo service networking restart

und die folgenden nach postfix Konfigurationsänderungen

sudo service postfix reload
A23
quelle
0

Für mich: Ich musste ergänzen localhost, mynetworksegal ob 127.0.0.0/8schon da war. So, jetzt sieht es aus:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Putnik
quelle