Come correggere Postfix '' Accesso negato negato ''?


54

Questa mattina, al fine di correggere un problema con una mancata corrispondenza del nome nel certificato di sicurezza, ho seguito i passaggi consigliati da Come riparare SSL del server di posta? , ma ora, quando tento di inviare un'e-mail da un client (in questo caso il client è Windows Mail), ricevo il seguente errore.

L'indirizzo e-mail rifiutato era "email@gmail.com". Oggetto 'Questo è un test. ", Account:" mail.domain.com ", Server:" mail.domain.com ", Protocollo: SMTP, Risposta del server:" 554 5.7.1: Accesso relè negato ", Porta: 25, Sicuro (SSL): No , Errore server: 554, Numero errore: 0x800CCC79

Modifica : posso ancora recuperare le e-mail da questo account e invio e-mail ad altri account nello stesso dominio. Non riesco proprio a inviare e-mail a destinatari al di fuori del nostro dominio.

Ho provato a disabilitare del tutto TLS ma nessun dado, ho ancora lo stesso errore.

Quando controllo il file mail.log, vedo quanto segue.

Jul 18 08:24:41 company imapd: LOGIN, user=user_name@domain.com, ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, user=user_name@domain.com, 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@gmail.com>: Relay access denied; from=<user_name@domain.com> to=<email@gmail.com> 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, user=user_name@domain.com, ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

Il file main.cfè simile al seguente:

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

Come nota a margine, il mio datore di lavoro vuole essere in grado di inviare e-mail dai client (Thunderbird e Outlook) sia all'interno della nostra rete locale che all'esterno.


6
Perché non accetti?
Rook,

Risposte:


58

TLS abilita semplicemente la crittografia sulla sessione smtp e non influisce direttamente sul fatto che Postfix sia autorizzato o meno a inoltrare un messaggio.

Il messaggio di inoltro negato si verifica perché le regole smtpd_recipient_rest restrizioni non sono state soddisfatte. Una di queste condizioni deve essere soddisfatta per consentire al messaggio di passare attraverso:

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

Per spiegare quelle regole:

permit_sasl_authenticated

consente mittenti autenticati tramite SASL. Ciò sarà necessario per autenticare gli utenti esterni alla rete che sono normalmente bloccati.

check_recipient_access

Questo farà sì che postfix cerchi in / etc / postfix / filtered_domains le regole basate sull'indirizzo del destinatario. (A giudicare dal nome del file sul nome del file, probabilmente sta semplicemente bloccando domini specifici ... Verifica se gmail.com è elencato lì?)

permit_mynetworks

Ciò consentirà agli host per indirizzo IP che corrispondono agli intervalli IP specificati in $ mynetworks. Nel file main.cf che hai pubblicato, $ mynetworks era impostato su 127.0.0.1, quindi inoltrerà solo le e-mail generate dal server stesso.

In base a tale configurazione, il client di posta dovrà utilizzare l'autenticazione SMTP prima di poter autorizzare l'inoltro dei messaggi. Non sono sicuro del database utilizzato da SASL. Ciò è specificato in /usr/lib/sasl2/smtpd.conf Presumibilmente utilizza anche lo stesso database delle caselle di posta virtuali, quindi dovresti essere in grado di abilitare l'autenticazione SMTP nel tuo client di posta ed essere tutto pronto.


14
smtpd_use_tls = no

Hai disabilitato TLS, quindi ora devi autorizzare la tua rete locale aggiungendola a mynetworks. Per esempio,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Questo risolverà l'invio solo dalla tua rete locale. Per inviare e-mail dall'esterno della rete locale, è necessario che l'autenticazione TLS funzioni.


Ho impostato smtpd_use_tls = yes perché dobbiamo essere in grado di inviare e-mail dall'esterno della rete. Tuttavia, il problema persiste.
Noah Goodrich,

Bump smtpd_tls_loglevel fino a 3 e vedere se nei log viene visualizzato qualcosa di interessante (e al termine ricordarsi di ridurlo a 1 o 0).
pag

Inoltre, prova a impostare smtp_use_tls su no (per inviare e-mail esterne). Vedere postfix.org/postconf.5.html#smtp_use_tls
PGS

1
-1 perché non tutti possono disabilitare tls.
jgifford25,

3
Non sto dicendo che dovrebbe disabilitare tls; Sto dicendo che, poiché lo ha già disabilitato, deve quindi configurare mynetworks. E che la soluzione completa è far funzionare di nuovo tls.
pag

6

Penso che ti manchi domain.com in mydestination, perché l'impostazione predefinita relay_domains=$mydestination, quindi puoi aggiungere la configurazione alla riga:

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

o:

relay_domains = $mydomain

Non dimenticare di riavviare il server Postfix ( service postfix restart) ogni volta che modifichi il file conf postfix.


+ 1 per l'aggiunta di "localhost, localhost.localdomain" all'elenco degli host (spesso un problema su alcuni sistemi, non è chiaro perché non sia un problema su altri)
Iain Collins

2

Ho avuto lo stesso problema in Outlook (con backend dovecote e postfix) e ho trascorso due giorni alla ricerca di soluzione e ottimizzando i miei file di configurazione. Tutto quello che dovevo fare era controllare "Il server richiede autenticazione" nella scheda In uscita nelle impostazioni di posta in Outlook e i miei messaggi ora vengono inviati a Gmail. Consulta le istruzioni dettagliate su come trovare l'impostazione qui http://support.bluetie.com/node/440 .


2

Questo problema mi ha infastidito per un po '. Stavo cercando di connettermi da server1.domain.com a server2.domain.com.

Ecco come ho risolto questo -

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

È inoltre necessario assicurarsi di aver impostato correttamente / etc / hosts e / etc / hostname e assicurarsi di eseguire quanto segue dopo le modifiche di rete:

sudo service networking restart

e quanto segue dopo le modifiche alla configurazione postfix

sudo service postfix reload

0

Per me: ho dovuto aggiungere localhosta mynetworksprescindere dal fatto che 127.0.0.0/8già c'era. Quindi, ora sembra:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.