Como configurar meu servidor local para enviar email

1

O título é um pouco enganador ... o que eu quero fazer é um pouco complicado:

Eu quero configurar meu servidor (executando o Ubuntu 10.04 Desktop) para enviar e-mails usando a função mail() do PHP.

Eu tentei apenas usá-lo, mas as mensagens não vão a lugar algum e o valor de retorno de mail() não é FALSE, então eu realmente não sei o que está acontecendo.

Algum conselho / ideias para configurar isso?

    
por Nathan Osman 15.05.2010 / 06:58

2 respostas

4

Aqui está minha opinião sobre a maneira correta de fazer isso, e não é muito difícil se tudo o que você quer fazer é enviar e-mail para php através do servidor SMTP do seu provedor.

Certifique-se de ter um MTA instalado em sua instância do Ubuntu, minha preferência é postfix, mas você pode usar um diferente (exim, qmail são bons), no entanto, algumas destas instruções precisarão ser adaptadas / pesquisadas separadamente se você Faz.

# apt-get install postfix postfix-doc

Em seguida, precisaremos informar como enviar e-mails para a Internet usando o servidor SMTP do ISP, você já deve ter essa informação, pode ser chamado de servidor de e-mail de saída , substitua smtp.isp.net por essas informações.

# postconf -e relayhost=smtp.isp.net

Isso ajustará seu arquivo de configuração postfix main.cf para permitir que seu servidor de e-mail envie para o mundo externo.

Agora precisamos editar o arquivo php.ini para informar a localização do binário sendmail , este binário não é um MTA do sendmail, mas um wrapper para o postfix que fornece uma interface consistente conhecida como sendmail .

Por padrão, no debian / ubuntu, o binário sendmail do postfix está em /usr/sbin/sendmail .

# whereis sendmail

Ajudará você a localizá-lo.

Agora que temos o caminho completo para o binário sendmail, podemos editar o arquivo php.ini, ele deve estar localizado em /etc/php5/apache2/php.ini, abri-lo em qualquer editor que você esteja familiarizado .

Localize a seção marcada com [mail function] e comente as diretivas SMTP e smtp_port .

Descomente sendmail_path e adicione o caminho completo ao binário do sendmail diretamente após o sinal =.

Em seguida, edite isso

# /etc/init.d/postfix restart
# /etc/init.d/apache2 restart

Em seguida, tente enviar uma mensagem de um script php, se falhar, verifique o arquivo /var/log/mail.info.

    
por 15.05.2010 / 11:50
2

EDITAR As sugestões a seguir são apenas etapas de solução de problemas para determinar onde está ocorrendo a falha e não sugestões para soluções de longo prazo. END EDIT

Telnet para o servidor pela porta 25 que hospeda o usuário ao qual você está tentando se conectar e inicie uma sessão de e-mail . Por exemplo, se você estiver enviando um e-mail para [email protected], primeiro obterá o registro mx para o bobrocks.com (usando o nslookup), e então telnet para o registro mx assim:

telnet mail.bobrocks.com 25

De lá, siga o artigo do WikiHow com o qual eu fiz o link acima para tentar enviar uma mensagem de e-mail para esse usuário. Se funcionar, mas o seu script PHP não, então é hora de dividir o wireshark e ver o que o tráfego da rede lhe diz.

Além disso, você pode obter a função mail () para trabalhar na CLI do PHP em vez de usar o Apache? Você está usando o AppArmor? E o (in) famoso SELinux?

    
por 15.05.2010 / 07:55

Tags