Como configurar um nome de domínio real para o endereço do remetente


10

Tentei enviar um email usando a mail()função php , mas ela falhou de alguma forma, reclamando que um nome de domínio real é necessário. O seguinte é observado no maillog:

sendmail 4984 r25984: from = apache, tamanho = 273, class = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, relay = apache @ localhost
sendmail 4985 r25985: ruleset = check_mail, arg1 =, relay = mydomain.com [127.0.0.1], rejeitar = 553 5.5.4 ... Nome de domínio real necessário para o endereço do remetente
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), atraso = 00: 00:01, xdelay = 00: 00: 00, mailer = retransmissão, pri = 30273, retransmissão = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = erro no formato de dados
sendmail 4984 r25984: r25984: DSN: erro de formato de dados

O cron pode enviar email para external@server.com sempre que houver um problema com o logrotate. Não sei por que o php é incapaz de fazê-lo. Tentei fazer alterações na configuração padrão no `sendmail.mc com o seguinte:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl

Mas, parece não ter nenhum efeito. O cabeçalho do endereço na função php mail já foi definido. Também assegurei que o SELinux estivesse httpd_can_sendmailativado. O que mais preciso fazer para receber a correspondência?


Você editou o sendmail.mc, mudou as linhas localhost.localdomaine localhostpara algo significativo e compilou o arquivo mc sendmail.cf?
precisa saber é o seguinte

@fboaventura, não, tirei o comentário das duas linhas removendo-as dnlna frente delas.
Pergunta Overflow

Você pode adicionar a parte relevante do seu script php, onde está invocando mail()? E, sendmail.mcnão é o arquivo de configuração adequado, esse arquivo deve ser compilado sendmail.cfusando o m4.
precisa saber é o seguinte

@fboaventura, obrigado, eu sei que em relação ao requisito de compilação, eu posso fazê-lo funcionar agora. Veja minha resposta abaixo. Obrigado pela vossa ajuda :)
Pergunta Overflow

Respostas:


10

Eu acho que acabei de resolver. Eu tenho o seguinte em / etc / hosts :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

O que eu preciso é colocar myserver.com na frente da linha localhost.localdomainpara que o sendmail pense que está usando um domínio real para enviar o email.


3
Você poderia definitivamente aceitar sua própria resposta é que essa era a solução ... Como uma nota de rodapé, geralmente é /etc/hosts(com um "s"), além disso: boa resposta!
Levite

2

Você precisa configurar, em seus scripts, os cabeçalhos do seu email From: sender@domain.com.


Desculpe, eu deveria ter mencionado que isso já foi definido nos cabeçalhos.
Pergunta Overflow

1

No seu sendmail.mcadd:

LOCAL_CONFIG
Djmyserver.com

Recompile sendmail.cf, reinicie o sendmail e você deve estar bem


1

No meu caso, no Ubuntu 16.04 em uma instância da AWS, era necessário adicionar /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

em uma linha anterior à MAILER_DEFINITIONSlinha no final do arquivo E adicione a mesma linha ao final de /etc/mail/submit.mc. Em seguida, digite sudo supermissões de root e compile para configurar com:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... então exitsudo. Por fim, sudo service sendmail restartpara reiniciar o sendmail, e a partir daí os emails foram exibidos como enviados pelo nome do domínio. Nenhum dos outros comandos FEATURE ou MASQUERADE foi necessário, nem uma entrada no /etc/hostsarquivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.