problemas de resolução Sendmail e nslookup

4

No meu servidor Ubuntu eu tenho tentado fazer com que a função mail () do PHP funcione instalando o sendmail (eu também tenho o postfix instalado, mas desisti dele). No entanto, quando tento enviar mensagens, elas são enfileiradas com o seguinte erro em /var/log/mail.log :

sm-mta[xxx]: gethostbyaddr(x.x.x.x) failed: x

Quando eu executei um nslookup (por exemplo, nslookup gmail.com ) ele disse que não poderia ser resolvido e a conexão expirou. Depois de passar o dia todo sobre isso e tentar várias coisas, decidi colocar os servidores de nomes do meu domínio em meu arquivo de interfaces, conforme: link

Isso atenuou o problema que estava tendo com nslookup , mas ainda recebo o mesmo erro nos registros ao tentar enviar e-mails, exceto que meu endereço IP público não está aparecendo, apenas o endereço privado. por exemplo,

sm-mta[xxx]: gethostbyaddr(178.x.x.x) failed: x # public IP error not showing anymore
sm-mta[xxx]: gethostbyaddr(10.x.x.x) failed: x # private IP error still showing

Eu examinei muita documentação sobre isso e ainda não tenho certeza do que estou fazendo de errado. Verifiquei que o sendmail está usando a porta 25. Como estou enviando e-mails apenas, preciso me preocupar com os registros DNS referentes ao MX para o meu servidor?

/etc/resolv.conf :

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888
nameserver 8.8.8.8

/etc/dhcp/dhclient.conf :

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}

#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}

etc/hosts :

# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
#     /etc/cloud/cloud.cfg or cloud-config from user-data
127.0.1.1 domain.name
127.0.0.1 localhost.localdomain localhost
178.x.x.x domain.name

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
    
por user103853 06.01.2015 / 19:59

3 respostas

2

Tanto quanto eu posso ver, você só quer enviar e-mails. Nesse caso, você não deve definir um registro MX para o servidor, pois o seu servidor de e-mail não é responsável por nenhum domínio.

Se eu entendi seu problema, você realmente quer apenas um MTA que retransmita seus e-mails.

Configurar um servidor de correio completo para esse propósito é um exagero; Então, primeiro aqui estão algumas alternativas: link

Se você quiser ter um servidor de e-mail real, o postfix seria preferível: link

No entanto, seu problema de DNS provavelmente é independente disso.

É claro que é desejável que todos os IPs e nomes de host usados em seu servidor possam ser resolvidos. Para conseguir isso, você precisaria de um servidor de nomes local para seus endereços locais (e nomes) que encaminha quaisquer outras solicitações para algum outro servidor de nomes.

Mas pode haver uma maneira mais fácil: as pesquisas de DNS que o servidor de email executa devem depender dos domínios remetente e destinatário dos emails. Você deve verificar, se eles estão corretos e limitar-se apenas aos nomes, que podem ser resolvidos. Talvez você tenha configurado o endereço De para apontar para algum domínio definido localmente?

Para depurar isso, você pode tentar enviar e-mails a partir da linha de comando primeiro e passar para o PHP-mailer assim que ele funcionar.

Um email de exemplo da fila seria útil para verificar isso.

E você poderia por favor postar a saída de netstat -natp ? Apenas para ver a que endereços IP o sendmail está vinculado.

Eu sei que esta resposta não está completa, mas isso é o máximo que posso dizer neste momento.

    
por 15.01.2015 / 22:53
3

Enquanto você escreve, teve que funcionar.

user1316146 também está certo: gethostbyaddr está fazendo pesquisas reversas de ip, que não são necessárias para o envio de mensagens. O problema não está aqui, na minha opinião.

Eu acho que você tem apenas uma rede barulhenta ou um DNS local não muito confiável. Você tinha que configurar seu sendmail para tentar obter seu endereço de destino de forma mais agressiva e muitas vezes.

Ou talvez você deva instalar uma ligação local de cachingonly para tornar esses problemas mais claros.

Ou, talvez você deva tentar uma mta mais robusta, o postfix é um bom caminho.

    
por 11.01.2015 / 02:31
2

gethostbyaddr está executando DNS reverso, então você precisa ter registros PTR configurados para os endereços IP em questão. Você também precisa que esse intervalo de endereços seja delegado a você para o endereço público.

Se você estiver usando o 8.8.8.8 como seu DNS para a caixa, você não poderá ter registros PTR para a rede 10.0.0.0/8.

Essa pesquisa geralmente ocorre apenas para o envio de correio para o servidor, pois o servidor de correio tenta determinar o nome do host do remetente para compará-lo com a mensagem HELO enviada.

A propósito, se você está apenas tentando enviar e-mail, a configuração padrão do postfix funciona perfeitamente para isso no Ubuntu.

    
por 09.01.2015 / 18:42