acabei de descobrir que a mail()
função não está funcionando
estou no Debian, instalei o postfix porque um amigo me disse (embora eu não o tenha configurado).
Quando faço um phpinfo() eu tenho:
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
mas nestes diretórios eu não tenho nada parecidosendmail
Você tem uma ideia do que devo fazer para que mail() funcione?
Obrigado
Responder1
No Unix, a maioria dos programas depende de um MTA (agente de transferência de mensagens) para fazer a transmissão de mensagens. Quando um programa deseja enviar uma mensagem, ele executa /usr/sbin/sendmail
e entrega a mensagem inteira em stdin.
O MTA do Sendmail foi o primeiro a funcionar dessa forma (e ainda funciona), e outros MTAs seguem a mesma convenção de fornecer um /usr/sbin/sendmail
programa.
[Nesta resposta, Sendmail é o MTA original e sendmail
(minúsculas) é /usr/sbin/sendmail
(que vem com todos os MTAs usados atualmente).]
O PHP mail()
segue a tradição Unix e apenas passa a mensagem para o sendmail
executável. O que significa que você precisa de um MTA. Você já instalou o Postfix, o que é bom. no entantofaztem um sendmail
binário, então se você não o tiver /usr/sbin/
, então você deve tê-lo instalado em outro lugar - talvez /usr/local/sbin/
se compilado a partir do código-fonte?
A reinstalação do Postfix pode resolver o problema. Caso contrário, atualize sua pergunta com detalhes como como você instalou o Postfix.
Se você sendmail
estiver em outro lugar que não seja /usr/sbin/
, você terá que editar a configuração do PHP -- php.ini
. Geralmente está em /etc/php5/
, e o Debian temtrêsdaqueles. ( cgi/
é para CGI/FCGI genérico, apache2/
é para o módulo Apache PHP, cli/
é para quando PHP é usado na linha de comando.)