Falha na pesquisa postfix: funciona a partir do localhost, não em outros nós na LAN

1

Estou com uma falha de pesquisa temporária no endereço do destinatário ao tentar enviar e-mails usando o Postfix e o Gmail de uma máquina diferente do host, na mesma rede. Funciona muito bem ao testar no host Postfix. EDIT: Eu tenho um nó cliente na mesma rede local solicitando que este servidor Postfix envie um email para ele. O servidor está recusando, citando uma falha de pesquisa temporária.

Para chegar onde estou, segui estas instruções: link < br> Em seguida, alterei o parâmetro mynetworks para incluir qualquer nó na sub-rede .3 de nossa LAN.

O que eu tentei corrigir o problema:
1) adicionando aliases para endereços de e-mail específicos e depois executando newaliases
2) adicionando relay_domains para main.cf
3) alterando o arquivo sasl_passwd para conter: smtp.gmail.com ou COMPANYNAME.com
4) alterando o valor de relay_host para smtp.gmail.com ou smtp.COMPANYNAME.com em main.cf
5) alterando os valores dos meus destinos em main.cf

Aqui está meu main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = hans
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = smtp.COMPANYNAME.com, COMPANYNAME.com, smtp.gmail.com, localhost.localdomain,     localhost
relayhost = [smtp.gmail.com]:587
relay_domains = COMPANYNAME.com, gmail.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.3.0/255
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

UPDATE: Aqui está o meu mail.log, estou corrigindo o problema da máscara de rede agora. Ainda não sei como corrigir o problema de pesquisa temp.

Jan 30 15:42:07 hans postfix/smtpd[10994]: NOQUEUE: reject: RCPT from unknown[192.168.3.3]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<localhost>  
Jan 30 15:42:07 hans postfix/smtpd[10994]: warning: bad net/mask pattern: "192.168.3.0/255"  

UPDATE 2: Eu fiz muitas mudanças no meu main.cf. Aqui está o mais recente.

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = hans
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = hans, localhost.localdomain, localhost
relayhost = [smtp.gmail.com]:587
relay_transport = relay
relay_domains = mail.companyname.com, companyname.com, gmail.com
mynetworks_style = subnet
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [192.168.3.0]/255
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
smtp_sasl_tls_security_options = noanonymous
smtp_connection_cache_destinations = smtp.gmail.com

smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
permit_auth_destination,
reject_unauth_destination

smtpd_sender_restrictions =
permit_mynetworks,
check_relay_domains  

Último log de erros:

Estas são as mensagens mais recentes, mas eu as consertei o suficiente para que elas não sejam mais pertinentes.

Feb  3 15:10:17 hans postfix/smtpd[18037]: fatal: parameter "smtpd_recipient_restrictions": specify at least one working instance of: check_relay_domains, reject_unauth_destination, reject, defer or defer_if_permit  

Conselhos de outras pessoas: Alguém me disse que eu preciso de um DNS adequado entre os clientes e o servidor Postfix. Aparentemente, estar na sub-rede listada na minha configuração não é suficiente. Não tenho certeza se é relevante, porque o ponto principal é que o Postfix não deveria estar fazendo pesquisas locais, mas enviando o e-mail para o Gmail. Estou enganado?

    
por Facepalm 30.01.2015 / 17:50

1 resposta

0

O próprio postfix tem documentação sobre como depurar quando algo dá errado. Para depurar o processo postfix, o maillog era seu amigo. O primeiro passo da depuração é emitir este comando

egrep '(warning|error|fatal|panic):' /some/log/file | more

No maillog podemos ver que o postfix reclama sobre bad net/mask pattern: "192.168.3.0/255" . Do seu main.cf , podemos confirmar que um dos endereços IP em mynetworks (192.168.3.0/255) possui um padrão errado. Talvez você queira dizer 192.168.3.0/32.

OK, mas por que funciona de localhost, não em outros nós na LAN

Algumas respostas especulativas:

  • Você usa o comando mail para enviar e-mails do locahost. Com este modo, o postfix não se importará em usar o parâmetro mynetworks .
  • Você usa o smtpd para enviar email (por telnet localhost 25 ). Com este modo, o postfix apenas verifica a primeira entrada de mynetworks (ou seja, 127.0.0.0/8) e descobre que o cliente estava em correspondência com essa entrada, de modo que o postfix nem se importaria em verificar o restante da lista de mynetworks entradas.
por 05.02.2015 / 01:43