Falha na conexão do host de retransmissão de postfix: tempo esgotado ao receber a saudação inicial do servidor

6

Eu tenho uma caixa do servidor Elastix para a qual desejo enviar notificações por e-mail de correios de voz. Eu gostaria de enviá-los através do e-mail da empresa (hospedado pelo provedor de hospedagem compartilhada Bluehost). Eu segui as instruções sobre como usar o Postfix como um servidor de retransmissão. E-mails não saem. Eu obtenho o seguinte nos logs (ligeiramente ofuscado):

Sep 27 16:31:51 TD1000 postfix/smtp[9757]: 1B2C357117: to=<[email protected]>, relay=boxNNN.bluehost.com[a.b.c.d]:465, delay=5241, delays=5076/0.03/165/0, dsn=4.4.2, status=deferred (lost connection with boxNNN.bluehost.com[a.b.c.d] while receiving the initial server greeting)

Vários lugares sugerem que pode ser um problema na lista negra. No entanto, parece que isso seria um problema para o meu outlook em execução no meu PC também. O que estou tentando fazer é fazer com que o postfix atue como o Outlook e enviar através do Bluehost, usando o SSL. (minhas configurações do outlook: boxNNN.bluehost.com:465, SSL, autenticação necessária)

Quando subo o nível de depuração, recebo a seguinte mensagem:

dns_query: boxNNN.bluehost.com (MX): Host found but no data record of requested type

Mas como a mensagem final é sem resposta, e ela encontra um endereço IP para o servidor, não tenho problemas com o DNS.

postconf -n revela:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 5
debug_peer_list = boxNNN.bluehost.com
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = cenginc-office.local
myhostname = td1000.my-office.local
mynetworks = /etc/postfix/network_table
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.5.6/README_FILES
relayhost = boxNNN.bluehost.com:465
sample_directory = /usr/share/doc/postfix-2.5.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_connect_timeout = 300
smtp_enforce_tls = yes
smtp_helo_name = my-phone-system
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_domains =
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp

(estamos usando o Postifix 2.3.3 de acordo com a interface do usuário do Elastix, então não sei por que as amostras dizem 2.5.6)

Quando faço telnet para a caixa e porta bluehost, a conexão permanece aberta por um curto período de tempo e depois fecha, acho que não estou vindo como SSL.

Eu usei este site (entre outros) para a configuração, mas não vejo o que estou perdendo. link

Alguma idéia do que estou fazendo errado? Minha teoria é que o postfix não está fazendo algo que o bluehost espera na conexão inicial, mas não tenho ideia do que. Obrigado pela sua ajuda.

    
por MrPhilTX 01.10.2013 / 05:45

3 respostas

2

Eu não tenho certeza se é onde eu devo colocar isso, mas aqui está como eu consegui trabalhar.

Então, kworr e befreeandgood me colocam no caminho certo. O smtp_sasl_ * não faz nada com SSL, apenas com autenticação.

Eu segui uma combinação das instruções dos links a seguir: Este me pegou perto link mas deixou de fora algumas coisas para definir. Este link adicionou inet_interfaces = loopback_only .

Essas opções me levaram a alguns problemas com o servidor de email rejeitando vários nomes de cabeçalho, como "de" e "responder a". Eu corri as mensagens através de algumas instruções que encontrei via googling, (mas eu não tenho permissão para postar esses links, já que já ultrapassei minha cota de links).

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = loopback-only
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = my-office.local
myhostname = td1000.my-office.local
mynetworks = /etc/postfix/network_table
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.5.6/README_FILES
relayhost = 127.0.0.1:5001
sample_directory = /usr/share/doc/postfix-2.5.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_connect_timeout = 60
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_sasl_type = cyrus
smtp_use_tls = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_tls_auth_only = no
smtpd_tls_loglevel = 2
smtpd_tls_received_header = no
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_domains =
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp

Assim, o smtp_generic_maps foi usado para renomear os vários endereços que chegaram a algum endereço que realmente existe. Eu tive que fazer isso por dois nomes diferentes, que eu encontrei procurando no arquivo / var / log / maillog.

Então, o resumo para se conectar ao Bluehost:

  • Ativar autenticação smtp_sasl
  • Use stunnel para criar um túnel SSL
  • Use smtp_generic_maps para mapear os nomes de usuário inexistentes que o asterisco está usando.
  • Dedilhar com o mydomain e isso pode levar você ao redor do requisito de mapas genéricos. Eu também vi alguém referenciando $myorigin como uma possível solução.
por 01.10.2013 / 21:36
5

Temos dois fatos aqui

  • Você está conectado ao bluehost pela porta 465
  • O Postfix relatou uma mensagem de erro: perdeu a conexão com boxNNN.bluehost.com [a.b.c.d] ao receber a saudação inicial do servidor

Uma possível explicação é O cliente SMTP no Postfix 2.11 ou anterior não suporta SSL .

Explicação

No SMTP, existem dois esquemas de criptografia : STARTTLS e SMTPS. A diferença é que (1) SMTPS requer criptografia SSL do primeiro byte e (2) STARTTLS requer primeiro modo de texto simples e, opcionalmente, cliente e servidor fazem negociação SSL após o comando STARTTLS.

O servidor SMTP Postfix (smtpd) suporta os dois protocolos . O problema é o cliente SMTP (antes do postfix 3.0) - aquele que envia e-mail para o servidor remoto - não suporta a conexão SMTPS. Suporta apenas o modo de texto simples ou o modo STARTTLS.

O que acontece aqui é: O cliente SMTP do Postfix usa o modo de texto sem formatação para se conectar ao Bluehost porque o postfix deseja estabelecer STARTTLS. Mas o Bluehost espera que o primeiro byte fosse negociação SSL não texto puro. Essa incompatibilidade faz o servidor Bluehost descartar silenciosamente os dados e desconectar o postfix. O postfix não sabe o que está acontecendo aqui, então ele lança o erro no maillog

Sep 27 16:31:51 TD1000 postfix/smtp[9757]: 1B2C357117: to=<[email protected]>, relay=boxNNN.bluehost.com[a.b.c.d]:465, delay=5241, delays=5076/0.03/165/0, dsn=4.4.2, status=deferred (lost connection with boxNNN.bluehost.com[a.b.c.d] while receiving the initial server greeting)

Solução

A documentação do TLS do Postfix fornece uma solução alternativa para usar stunnel aqui. Portanto, a solução do MrPhilTX estava correta para o Postfix < 3,0.

No postfix 3.0, o Wietse Venema decidiu fornecer o recurso SMTPS adicional para o cliente SMTP postfix. Com esse recurso, a solução stunnel não é necessária aqui. Existem duas variações aqui:

a) Ativar SMTPS para toda conexão SMTP de saída

Normalmente, neste caso, o postfix possui apenas relayhost como SMTPS, como o problema do OP. Então

# Client-side SMTPS requires "encrypt" or stronger.
smtp_tls_security_level = encrypt
smtp_tls_wrappermode = yes
# The [] suppress MX lookups.
relayhost = [mail.example.com]:465

b) Ativar SMTPS para vários hosts

Para outro caso, você precisa de transporte customizado e transport_maps para ativar seletivamente o SMTPS

# /etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport

# /etc/postfix/transport:
example.com  relay-smtps:example.com:465

#/etc/postfix/master.cf:
relay-smtps  unix  -       -       n       -       -       smtp
    # Client-side SMTPS requires "encrypt" or stronger.
    -o smtp_tls_security_level=encrypt
    -o smtp_tls_wrappermode=yes
    
por 27.02.2015 / 16:04
0

Quando o domínio de destino não possui registros MX, o servidor SMTP deve tentar entregar mensagens em qualquer registro do domínio A. Por example.net , este seria qualquer endereço de example.net .

Se a conexão com a porta criptografada falhar, você precisa consultar o manual do postfix sobre o parâmetro smtp_tls_security_level . Você pode encontrar uma longa explicação, mas eu acho que na maioria dos casos você só precisa adicionar à sua configuração:

smtp_tls_security_level=may
    
por 01.10.2013 / 06:41

Tags