Comando Helo rejeitado: Host não encontrado - Configura o postfix para aceitar o envio de e-mails do meu servidor doméstico através do meu servidor público

7

Eu gostaria de receber e-mails do sistema do meu servidor doméstico. Então, eu estou tentando configurar o postfix para fazer isso através 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 do host do meu roteador ser incluído no nome do host, levando a um nome de host completo "homeserver.blablabla_crappyrouter".

Meu servidor doméstico se conecta ao meu servidor público por meio de um túnel OpenVPN com IP fixo, no qual o meu servidor doméstico é um cliente. Do meu servidor doméstico para o meu servidor público (e vice-versa), há um IP fixo, para que eles possam se comunicar sem problemas por meio 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 no 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 meu servidor público do OpenVPN usando

relayhost = [<public server IP through OpenVPN>]

Agora esta configuração não envia e-mails e me dá o erro:

Helo command rejected: Host not found

Eu pesquisei isso e descobri que o postfix pesquisa o nome do host, mas aparentemente ele não o encontra devido ao seu nome de host confuso.

A minha pergunta: Como posso dizer ao postfix do meu servidor público para permitir tudo do meu servidor de casa cegamente?

Obrigado.

ATUALIZAÇÃO:

Eu defini 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
    
por The Quantum Physicist 02.09.2015 / 15:37

3 respostas

6

Aqui está o problema:

smtpd_helo_restrictions = reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

O último deles, reject_unknown_helo_hostname , diz ao Postfix para rejeitar o e-mail 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 para no ). 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ções em smtpd_helo_restrictions ainda se aplicam, como você descobriu.

    
por 02.09.2015 / 16:11
6

Você pode alterar sua política HELO para:

smtpd_helo_restrictions = 
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

... e adicione o endereço do servidor de e-mail de sua casa à linha mynetworks = ... .

Embora a resposta de @JennyD seja válida e deva resolver seu problema, pode ser melhor manter sua política atual de HELO para hosts externos. Isso tem uma vantagem: os MTAs configurados incorretamente não poderão enviar mensagens para o servidor, o que evita spam (embora um pouco). De qualquer forma, os hosts com configurações incorretas do HELO são suspeitos.

Indo um pouco além, certifique-se de ter pelo menos reject_unknown_client_hostname entre a lista em ie. %código%. Isso evitará mensagens de hosts MTA sem o registro DNS reverso adequado e, portanto, muitos retransmissores de botnet. Outra importante medida antispam seria a deamon política do SPF (ou seja, milter-greylist ) e, obviamente, SpamAssassin .

    
por 03.09.2015 / 17:16
1

Se você não tem controle detalhado sobre os clientes, você deve usar o SASL mesmo assim:

smtpd_delay_reject = yes

smtp_helo_restrictions =
    permit_sasl_authenticated,
    reject_unknown_helo_hostname

Isso permite que hosts autenticados pelo SASL enviem um helo sem restrição

Observe que, em algumas configurações, o master.cf define smtp_helo_restrictions para submission e smtps para $mua_helo_restrictions , portanto, nesse caso, defina mua_helo_restrictions .

    
por 20.07.2017 / 18:54