Postfix encaminhando todos os emails independentemente das restrições

Postfix encaminhando todos os emails independentemente das restrições

Estou tentando configurar o Postfix para retransmitir mensagens somente se vierem do host local E somente se forem para um determinado domínio. No entanto, assim que eu especificar um servidor de retransmissão, tudo (exceto a entrega local) irá para lá. Eu estava pensando que havia restrições erradas, então finalmente decidi "rejeitar tudo" e ainda assim foi aprovado. Querendo saber se mynetworksignora tudo, eu indefinido mynetworks. Ainda retransmite tudo.

Neste momento, postconf -ndá:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = loopback-only
inet_protocols = all
mailbox_size_limit = 0
mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks =
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = domain.com
relayhost = [mailserver.domain.com]:587
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = reject
smtpd_recipient_restrictions = reject
smtpd_relay_restrictions = reject
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

Inicialmente, eu estava tentando algo mais parecido com isto (mostrando apenas o que é diferente):

mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks = 127.0.0.1 [::1]/128
smtpd_client_restrictions = permit_mynetworks reject
smtpd_recipient_restrictions = permit_auth_destination reject
smtpd_relay_restrictions = permit_auth_destination reject

Estou perdido. Sem mesa de transporte. Postfix 2.11.0 (Ubuntu 14.04).

Responder1

O servidor de retransmissão na terminologia postfix é um servidor para o qual o postfix entregará todos os emails não locais (por exemplo, o postfix na rede interna da empresa definiria o servidor de email principal da empresa como seu retransmissor, para que não tentasse entrar em contato com os servidores de destino). Isto é para envio de e-mail e é controlador pelorelayhostdiretiva.

O Postfix sabe quais domínios são dele pela configuração domydestinationdiretiva. Os domínios nesta lista serão entregues localmente (se tiverem o registro MX correto).

Anfitriões emmynetworkstêm permissão para enviar e-mails de qualquer lugar para qualquer lugar. Portanto, você deve definir aqui apenas a rede em que confia (somente localhost ou rede interna). Diz-se que o postfix retransmite e-mails desses hosts para a Internet. Esta é a configuração padrão, que é definida em smtpd_relay_restrictions(ou smtpd_recipient_restrictionsantes da v2.10) com o permit_mynetworksvalor. Se você remover permit_mynetworkstotalmente a configuração do postfix, mynetworkso parâmetro não fará nada.

Diretivarelay_domainscontrola quais domínios não locais o postfix aceita emails do mundo inteiro. Isso normalmente é usado quando seu postfix é MX de backup para algum domínio.


Então no seu caso a configuração deve estar mynetworksvazia (se vazio não for possível, use algum IP interno que não seja usado na sua rede como 10.10.10.10)OUremover permit_mynetworksde smtpd_client_restrictions.

relay_domains = domain.com
mydestination = host.domain.com localhost
relayhost = [mailserver.domain.com]:587

Responder2

Aqui está o que finalmente consegui funcionar. A chave era default_transport = error, para que qualquer coisa que não corresponda ao relé seja devolvida. Obrigado @ Marki555 por me fazer pensar além das configurações do smtpd.

default_transport = error
inet_interfaces = loopback-only
mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks = 127.0.0.1 [::1]/128
relay_domains = domain.com
relay_transport = smtp
relayhost = [mailserver.domain.com]:587
smtpd_client_restrictions = permit_mynetworks reject
smtpd_recipient_restrictions = permit_auth_destination reject
smtpd_relay_restrictions = permit_auth_destination reject

Outra boa dica de depuração do postfix: uma mensagem de devolução local (ou seja, retransmissão recusada imediatamente) ainda contém o nome do host de retransmissão, mesmo que o host de retransmissão não tenha sido tocado!

Eu também pesquisei master_service_disable = inet, mas há coisas suficientes para lidar com o envio de correio local conectando-se ao localhost:25 que não era realmente prático.

informação relacionada