Postfix: Contornando comandos incorretos de conexões SMTP

Olá !

Anteriormente, eu publiquei um artigo (https://respirandolinux.wordpress.com/2013/09/20/postfix-contornando-501-syntax-helo-hostname/) sobre como contornar o erro de sintaxe quando clientes remotos enviam o comando HELO/EHLO de forma incorreta, principalmente sem inserir o hostname após o comando. Utilizando o procedimento do meu artigo anterior, não será mais possível aplicar restrições na etapa HELO/EHLO, uma vez que independentemente da entrada, o resultado sempre será “OK”.

É muito comum quando temos um servidor SMTP que será utilizado por aplicações, muitos comandos serem enviados com a sintaxe incorreta ou até mesmo estas aplicações enviarem comandos inválidos. Para contornar este problema, podemos utilizar o parâmetro “smtpd_command_filter” no Postfix.

A diretiva “smtpd_command_filter” (disponível a partir da versão 2.7) é descrita na documentação do Postfix como um último recurso para contornar clientes que enviam comandos incorretos ou inválidos de fato. Apesar das modificações que serão aplicadas, é possível aplicar restrições HELO após utilizar esse parâmetro.

Vejamos um exemplo que pode ser utilizado para contornar clientes que enviam o HELO/EHLO sem estar seguido do FQDN:

smtpd_command_filter = pcre:/etc/postfic/command_filters

Conteúdo do arquivo:

/^HELO\s*$/ HELO nome.desejado
/^EHLO\s*$/ EHLO nome.desejado

Desta forma, quando um cliente remoto enviar o HELO/EHLO sem estar seguindo do hostname, este comando será substituído por “HELO/EHLO nome.desejado”.

No log será exibida uma entrada conforme abaixo sempre que um comando por modificado pelo Postfix.:

replacing client command “HELO” with “HELO domain.invalid”

Anúncios

12 comentários sobre “Postfix: Contornando comandos incorretos de conexões SMTP

  1. Fabio boa tarde, fiz a instalação do amavis seguindo seu tutorial, sóque está dando um erro mail tranport unavaliable, vc sabe oque está faltando?

  2. ov 17 15:16:45 mx postfix/qmgr[16524]: 6E21D209AB: from=, size=23272, nrcpt=1 (queue active)
    Nov 17 15:16:45 mx postfix/qmgr[16524]: warning: connect to transport private/amavis: Connection refused
    Nov 17 15:16:45 mx postfix/error[16568]: 6E21D209AB: to=, relay=none, delay=5652, delays=5652/0.01/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)
    Nov 17 15:20:39 mx postfix/master[16517]: terminating on signal 15
    Nov 17 15:20:40 mx postfix/master[16719]: daemon started — version 2.9.6, configuration /etc/postfix
    Nov 17 15:20:40 mx postfix/qmgr[16727]: 77878209C1: from=, size=23272, nrcpt=1 (queue active)
    Nov 17 15:20:40 mx postfix/qmgr[16727]: warning: connect to transport private/amavis: Connection refused
    Nov 17 15:20:40 mx postfix/qmgr[16727]: 7CB93209B1: from=, size=23279, nrcpt=1 (queue active)
    Nov 17 15:20:40 mx postfix/error[16733]: 77878209C1: to=, relay=none, delay=860, delays=860/0.02/0/0.02, dsn=4.3.0, status=deferred (mail transport unavailable)
    Nov 17 15:20:40 mx postfix/error[16738]: 7CB93209B1: to=, relay=none, delay=5131, delays=5131/0.03/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)
    Nov 17 15:21:00 mx postfix/postscreen[16743]: CONNECT from [10.243.22.38]:34503 to [10.243.66.65]:25
    Nov 17 15:21:00 mx postfix/postscreen[16743]: WHITELISTED [10.243.22.38]:34503
    Nov 17 15:21:00 mx postfix/smtpd[16744]: connect from unknown[10.243.22.38]
    Nov 17 15:21:00 mx postfix/smtpd[16744]: 274CA209C3: client=unknown[10.243.22.38]
    Nov 17 15:21:00 mx postfix/cleanup[16748]: 274CA209C3: message-id=
    Nov 17 15:21:00 mx postfix/smtpd[16744]: disconnect from unknown[10.243.22.38]
    Nov 17 15:21:00 mx postfix/qmgr[16727]: 274CA209C3: from=, size=23272, nrcpt=1 (queue active)
    Nov 17 15:21:00 mx postfix/error[16733]: 274CA209C3: to=, relay=none, delay=0.02, delays=0.02/0/0/0, dsn=4.3.0, status=deferred (mail transport unavailable)

  3. a configuração ´ta igualziho ao seu
    $inet_socket_bind = ‘0.0.0.0’; # Onde escutar – Colocar as interfaces onde o AMaViS deve aceitar conexões

  4. a situação é a seguinte

    1 – servidor amavis+postfix com spamassassin e clamav

    2 – servidor de email com postfix configurado fazendo relay para o primeiro.

  5. Você confirmou com o netstat que ele está escutando me todas as interfaces? Talvez a entrada tenha ficado duplicada no arquivo do Amavis.

    O log é de conexão recusada mesmo, ele não consegue se comunicar com o Amavis no endereço configurado.

  6. @mx:~# netstat -tap
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 localhost:spamd *:* LISTEN 11922/spamd.pid
    tcp 0 0 *:ssh *:* LISTEN 2768/sshd
    tcp 0 0 *:smtp *:* LISTEN 17304/master
    tcp 0 0 *:10024 *:* LISTEN 16992/amavisd-new (
    tcp 0 0 *:10025 *:* LISTEN 17304/master
    tcp 0 0 mx:ssh 10.200.21.20:4699 ESTABLISHED 3086/0
    tcp 0 0 mx:ssh 10.200.21.20:35635 ESTABLISHED 9608/sshd: root@not
    tcp 0 0 mx:ssh 10.200.21.20:35639 ESTABLISHED 9611/sshd: root@not
    tcp 0 0 mx:ssh 10.200.21.20:35198 ESTABLISHED 9427/1
    tcp6 0 0 [::]:ssh [::]:* LISTEN 2768/sshd
    tcp6 0 0 [::]:smtp [::]:* LISTEN 17304/master

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s