Gostaria de receber e-mails do sistema do meu servidor doméstico. Estou tentando configurar o postfix para fazer isso por meio do meu servidor público. Meu servidor público tem um IP fixo, enquanto meu servidor doméstico está em uma rede privada com um nome de host confuso devido ao nome de host do meu roteador incluído no nome de host, levando a um nome de host completo "homeserver.blablabla_crappyrouter".
Meu servidor doméstico se conecta ao meu servidor público através de um túnel OpenVPN com IP fixo onde meu servidor doméstico é um cliente. Do meu servidor doméstico para o meu servidor público (e vice-versa) existe um IP fixo, então eles podem se comunicar sem problemas através de um endereço fixo. Este é um túnel que me permite acessar meu servidor doméstico de qualquer lugar sem problemas de segurança.
Minha configuração de postfix em meu servidor público inclui o seguinte:
smtpd_recipient_restrictions = reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_rbl_client sbl.spamhaus.org,
permit
smtpd_helo_restrictions = reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname
smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net
E no meu servidor doméstico, adicionei o IP do servidor público do meu OpenVPN usando
relayhost = [<public server IP through OpenVPN>]
Agora esta configuração não envia e-mails e me dá o erro:
Comando Helo rejeitado: host não encontrado
Eu pesquisei isso e descobri que o postfix procura o nome do host, mas aparentemente não o encontra devido ao nome do host confuso.
Minha pergunta: como posso dizer ao postfix do meu servidor público para permitir tudo do meu servidor doméstico cegamente?
Obrigado.
ATUALIZAR:
Eu configurei a opção em main.cf
smtpd_helo_required = no
mas isso não ajudou. A seguir estão as entradas /var/log/mail.log logo após eu enviar um e-mail de teste:
Sep 2 15:53:53 HomeServer sm-mta[6677]: t82Drr6w006677: [email protected], size=69, class=0, nrcpts=1, msgid=<[email protected]_crappyRouter>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Sep 2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_subject, status=failed to extract CN
Sep 2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_issuer, status=failed to extract CN
Sep 2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
Sep 2 15:53:53 HomeServer sm-mta[6679]: t82Drr6w006677: [email protected], delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120069, relay=mydomain.com. [93.186.192.197], dsn=4.7.1, stat=Deferred: 450 4.7.1 <HomeServer.blablabla_crappyRouter>: Helo command rejected: Host not found
O e-mail que estou tentando enviar é:
ehlo localhost
mail from: [email protected]
rcpt to: [email protected]
data
Subject: My first mail on Postfix
Hi,
Are you there?
regards,
Admin
.
quit
e eu envio usando o comando:
cat mail.txt | nc localhost 25
Aqui está o problema:
O último deles,
reject_unknown_helo_hostname
, informa ao Postfix para rejeitar e-mails se o nome do host fornecido no comando HELO não puder ser resolvido. Se você remover isso, seu problema deve desaparecer.Você deve reverter a alteração que fez (configurando
smtpd_helo_required
parano
). Essa mudança fez com que um cliente pudesse se conectar e começar a enviar e-mails sem fazer um HELO - mas se o cliente fizer um HELO, as restriçõessmtpd_helo_restrictions
ainda se aplicariam, como você descobriu.Você pode alterar sua política HELO para:
...e adicione o endereço do seu servidor de correio doméstico à
mynetworks = ...
linha.Embora a resposta de @JennyD seja válida e deva resolver seu problema, pode ser melhor manter sua política HELO atual para hosts externos. Isso tem uma vantagem: MTAs mal configurados não poderão enviar mensagens para o seu servidor, o que o salvará de algum spam (embora um pouco). De qualquer forma, deve-se suspeitar de hosts com configuração incorreta do HELO.
Indo um pouco mais longe, certifique-se de ter pelo menos rejeite_unknown_client_hostname entre a lista em ie.
smtpd_client_restrictions = ...
. Isso evitará mensagens de hosts MTA sem registro de DNS reverso adequado e, portanto, muitas retransmissões de botnet. Outra medida antispam importante seria a política SPF deamon (ou seja , milter-greylist ) e, obviamente, SpamAssassin .Se você não tem controle refinado sobre os clientes, você deve usar SASL de qualquer maneira:
Isso permite que os hosts autenticados por SASL enviem um helo sem restrições
Observe que, em algumas configurações, master.cf define
smtp_helo_restrictions
para ambossubmission
esmtps
para$mua_helo_restrictions
, portanto, nesse caso, definamua_helo_restrictions
.