Esta manhã, a fim de corrigir um problema de incompatibilidade de nomes no certificado de segurança, segui os passos recomendados a partir de Como corrigir o servidor de correio SSL?, mas agora, ao tentar enviar um e-mail de um cliente (neste caso, o cliente é o Windows Mail), recebo o seguinte erro.
O endereço electrónico rejeitado foi '[email protected]'. Assunto 'Este é um teste. ', Conta: 'mail.domain.com', Servidor: 'mail.domain.com', Protocolo: SMTP, Resposta do servidor: '554 5.7.1 [email protected]: Acesso de retransmissão denied', Port: 25, Secure(SSL): Não, Erro do Servidor: 554, Número do erro: 0x800CCC79
Edit: Ainda posso recuperar e-mails desta conta, e envio e-mails para outras contas no mesmo domínio. Apenas posso't enviar emails a destinatários fora do nosso domínio.
Tentei desactivar completamente o TLS mas sem dados, continuo a receber o mesmo erro.
Quando verifico o ficheiro mail.log
, vejo o seguinte.
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
O ficheiro main.cf
tem este aspecto:
#
# 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
Como nota secundária, o meu empregador quer poder enviar e-mails de clientes (Thunderbird e Outlook) tanto de dentro da nossa rede local como de fora dela.
O TLS apenas permite a encriptação na sessão smtp e não't afecta directamente se o Postfix será ou não autorizado a retransmitir uma mensagem.
A mensagem de retransmissão negada ocorre porque as regras smtpd_recipient_restrictions não foram correspondidas. Uma dessas condições deve ser preenchida para que a mensagem possa ser transmitida:
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
Para explicar essas regras:
permit_sasl_authenticated
permite a autenticação de remetentes através do SASL. Isto será necessário para autenticar os utilizadores fora da sua rede que estão normalmente bloqueados.
check_recipient_access
Isto fará com que o postfix procure em /etc/postfix/filtered_domains por regras baseadas no endereço do destinatário. (A julgar pelo nome do ficheiro no nome do ficheiro, provavelmente está apenas a bloquear domínios específicos... Verifique se o gmail.com está aí listado?)
permit_mynetworks
Isto permitirá aos anfitriões por endereço IP que correspondam aos intervalos de IP especificados em $mynetworks. No main.cf que publicou, $mynetworks foi definido para 127.0.0.1, pelo que apenas retransmitirá e-mails gerados pelo próprio servidor.
Com base nessa configuração, o seu cliente de correio terá de utilizar a Autenticação SMTP antes de ser autorizado a transmitir mensagens. I'não tenho a certeza qual a base de dados SASL que está a utilizar. Isto está especificado em /usr/lib/sasl2/smtpd.conf Presumivelmente também utiliza a mesma base de dados que as suas caixas de correio virtuais, pelo que deverá ser capaz de activar a autenticação SMTP no seu cliente de correio e estar tudo configurado.
smtpd_use_tls = não
Você'desactivou o TLS, pelo que necessita agora de autorizar a sua rede local, adicionando-a à mynetworks
. Por exemplo,
mynetworks = 192.168.1.0/24 127.0.0.0/8
Isto irá corrigir o envio apenas a partir da sua rede local. Para enviar correio electrónico de fora da sua rede local, você'necessitará de obter autenticação TLS a funcionar.
Penso que sente a sua falta em mydestination.com, porque o padrão relay_domains=$mydestination
, pelo que pode anexar a configuração da linha:
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
ou:
relay_domains = $mydomain
Não se esqueça de reiniciar o servidor postfix (service postfix restart
) cada vez que editar o ficheiro postfix conf.