Antecedentes: Se você configurou um servidor apache local para fins de desenvolvimento, pode ter encontrado um problema no qual o sendmail leva muito tempo (pelo menos um minuto) para enviar e-mails. Isso é extremamente frustrante se você estiver tentando depurar um problema com um email que você gerou.
Existem várias postagens no fórum na internet que discutem esse problema. No entanto, nenhum dos temas descreveu o que fazer em detalhes suficientes para o meu conhecimento limitado. Aqui estão as etapas que funcionaram para mim:
1) encontre o seu nome de host (caso você tenha esquecido) usando este comando:
:~$ cat /hosts/hostname
myhostname
2) edite o arquivo /etc/hosts
e verifique se a primeira linha é a seguinte:
127.0.0.1 localhost.localdomain localhost myhostname
3) edite o arquivo de configuração do sendmail ( /etc/mail/sendmail.cf
no Ubuntu) e descomente a linha#O HostsFile=/etc/hosts
4) Reinicie o computador. O computador deve inicializar muito mais rápido agora e a função mail () deve retornar quase imediatamente. NO ENTANTO, os e-mails não serão realmente enviados, a menos que você siga a etapa 5.
5) Você deve usar a opção sendmail '-f' sempre que usar a função de email. Por exemplo:
mail('[email protected]', 'the subject', 'the message', null, '[email protected]');
Minha pergunta para meus colegas serverfaulters é:
Que outras alterações podem ser feitas para que eu não precise usar a opção sendmail -f? Embora não seja muito difícil adicionar a opção -f, é um problema quando o CMS (como o Drupal) não usa a opção -f ao enviar email. Você precisaria hackear um módulo principal para adicionar esta opção.
cat /etc/hostname
Respostas:
Bem, eu sei que isso não é o que você está perguntando, mas por que você não tenta o Postfix ou o Exim? Ambos estão disponíveis para o Ubuntu (o Postfix é até o mta padrão nos sistemas Ubuntu) e ambos fornecem um comando 'sendmail' compatível que funciona muito bem. O sendmail do IMHO é meio datado e você terá melhores chances de suporte com o MTA mais moderno.
fonte
sendmail
binário que aceita as mesmas opções que o sendmail original, por questões de compatibilidade.Isso funcionou para mim:
Veja instruções aqui sobre como fazer isso aqui: https://help.ubuntu.com/community/Postfix (Ele já pode estar instalado e o binário 'sendmail' pode realmente ser um alias para o postfix)
http://lenss.nl/2009/01/making-php-mail-work-on-ubuntu-through-postfix/
Eu acho que você pode simplesmente definir o parâmetro 'myorigin' para qualquer nome de domínio ativo, como um nome de domínio que você possui.
fonte
Isso pode ou não ser uma solução para você: adicione
mail.force_extra_parameters = "[email protected]"
ao seu arquivo php.ini . Faz o PHP anexar automaticamente [email protected] como um quinto parâmetro da função mail () do PHP.Esse é um valor codificado e aplicável apenas no php.ini, portanto não será muito flexível, mas talvez funcione para você no seu caso de desenvolvimento?
fonte
Observando o tráfego da rede (pense
tcpdump
) ou executando um processostrace
no sendmail ou no apache, você poderá ter uma idéia do porquê desse atraso, para que possa corrigir o problema raiz.Geralmente, os atrasos nesse intervalo ocorrem devido à falha nas pesquisas de DNS, mas você não saberá até que procure. A menos que você corrija o problema subjacente, ele provavelmente acabará sendo um problema, não importa como você tente solucionar o problema.
fonte
Eu nunca me deparei com um problema ao usar mail () no PHP que não era resultado de um problema no MTA.
No seu arquivo php.ini, ele mostrará qual comando é executado para enviar um email (padrão: "sendmail -t -i"). Tente enviar um email da linha de comando usando isso - aposto que é lento.
Itens comuns a serem verificados são se um servidor DNS está configurado corretamente na máquina (e pode resolver todos os endereços configurados no MTA) e se um relé inteligente está configurado, o nome pode ser resolvido em um endereço ao qual o sistema possa se conectar.
fonte