Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo do Brasil

[Resolvido] Como configurar o SendMail

Recommended Posts

Olá pessoal...

Bom... recebi, onde trabalho, um novo computador e, em troca de instalar o Ubuntu numa VBox dentro do XP, resolvi detonar o Windows7 original da máquina e instalar o Ubuntu (10.04) e um XP numa VBox...

Até aí, tudo bem... configurei a máquina toda com o gerenciador de instalações e foi tudo bem (exceto alguns caracteres trocadas nos bancos importados no MySQL) mas, principalmente, a função mail do PHP não funciona de jeito nenhum no Ubuntu/Apache2/PHP5...

Verificando o comando SendMail, descobri que é ele que não está funcionando, não sendo possível enviar uma mensagem pelo próprio Prompt.

O código PHP original enquanto hospedado no XP+IIS+PHP5 é simples... um exemplo:

 

ini_set('SMTP', 'smtp.marte.mg.gov.br');
$to = 'joao@ig.com.br';
$subject = 'Atribuição de Tarefa em Projeto';
$msg = 'Olá. Queremos informá-lo(a) sobre a designação de tarefa.';
$from = "From: <bergo@marte.mg.gov.br>";
mail($to, $subject, $msg, $from);

 

 

Em todas as páginas, quando é preciso enviar um email, apenas uso o código como visto acima... e não foi preciso configurar nada na máquina, nem no PHP.INI, IIS, etc... e sempre funcionou...

 

O servidor de email (smtp.marte.mg.gov.br) fica em outra máquina na rede... meu computador antigo, assim como o novo, obtém o IP via outro servidor DHCP, e nunca precisou de nenhum esquema ou permissão especial para enviar email pelo meu código em PHP...

 

No entanto, ao mudar os sites para o Apache/Linux, a função deixou de funcionar...

Muitos colegas "especialistas" em Linux deram, é claro, sua opinião, desde a condenar o Ubuntu, o Sendmail, postfix pra lá, mail pra cá e nada de descobrir porque não funciona... e configura arquivo .fc, .conf, apt-get nisso, apt-get naquilo, e nada... creio que por falta de saber como realmente o PHP funciona ou do que ele precisa na hora de enviar emails...

 

Então, gostaria de saber se alguém já passou por isso e se saberia exatamente o que precisa ser configurado no Linux para que a função mail funcione...

 

Em tempo... No WindowsXP, o php.ini (c:\arquivos de programas\PHP\php.ini) está assim:

[mail function]
; For Win32 only
SMTP = Localhost
smtp_port = 25

; For Win32 only
;sendmail_from = me@example.com

; Force ... ... even in safe mode.
;mail.force_extra_parameters =

[SQL]

 

 

No Linux, este é o php.ini (\etc\php5\apache2\php.ini):

[mail function]
; For Win32 only.
;SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path = /usr/sbin/sendmail -t -i

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =

[SQL]

 

 

O nome do meu computador é P01140054.

O nome do usuário padrão é bergo (adminstrador)

O servidor de email é o smtp.marte.mg.gov.br (configurado assim tanto no OutLook/XP como no Evolution/Linux)

A agẽncia do email é o pop3.marte.mg.gov.br (também configurado no Outlook/XP e Evolution/Linux).

A conta que vai enviar os emails pelo site PHP é o bergo@marte.mg.gov.br.

 

Então... é isso...

 

Apesar do meu computador não ser o servidor de emails corporativo, quando usando o WindowsXP, as mensagens são enviadas sem problemas... mas no Linux o mesmo não acontece... a função mail() não acusa erro, mas "prende" momentaneamente a página e não envia nada...

 

Já segui (tentei pelo menos) vários roteiros de configuração do sendmail, porém, até agora não encontrei um realmente claro e completo...

 

Então, se alguém puder ajuda, fico muito Grato!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal...

Depois de muita luta, consegui fazer com que o PHP passasse a enviar emails da minha máquina, com o Ubuntu10.04, para outros destinatários.

No final de muito instala e desinstala, quem acabou funcionando foi o Postfix.

A função mail() do PHP então começou a funcionar...

Agora, ainda resta um problema... não consigo enviar mensagens, ainda, para destinatários do próprio domínio (nem mesmo para mim)...

Se envio uma mensagem pelo prompt, com mail ou mailx, envia 100% para outros destinos mas nada para o próprio domínio.

Se envio pelo PHP, ocorre o mesmo... só dá certo para fora do domínio.

Exemplo, pelo prompt:

bergo@p01140044:~$ mailx bergo@marte.mg.gov.br -s "Teste"
Bom dia!
.
Cc: eu.bergo@ig.com.br
bergo@p01140044:~$
e

bergo@p01140044:~$ mailx eu.bergo@ig.com.br -s "Teste"
Bom dia!
.
Cc: bergo@marte.mg.gov.br
bergo@p01140044:~$
Resultado: email enviado para eu.bergo@ig.com.br em ambos, mas nada enviado para bergo@marte.mg.gov.br

 

O mesmo ocorre com o PHP...

 

ini_set('SMTP', 'smtp.marte.mg.gov.br');

$nmsg = 24;

$to      = 'juliocssilva@marte.mg.gov.br' . "\r\n";
$subject = 'O Assunto vai aqui';
$message = 'Hola hermanos ('.$nmsg.')';
$headers = 'From: bergo@marte.mg.gov.br' . "\r\n" .
    'Cc: juliocssilva@marte.mg.gov.br, eu.bergo@yahoo.co.uk, eu.bergo@ig.com.br ' . "\r\n" .
    'Reply-To: bergo@marte.mg.gov.br' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

global $g_error_mail;
if (! mail($to, $subject, $message, $headers)) {
  echo 'a) Houve alguma falha...<br>';
} else {
  echo 'B) Sem problema... ('.$nmsg.')<br>';
}
 // $headers);

Resultado: mensagem enviada somenta para os usuários que não estão no domínio, ou seja, os que estão em "marte.mg.gov.br" não recebem a mensagem...

 

E este exemplo:

ini_set('SMTP', 'smtp.marte.mg.gov.br');

$nmsg = 25;

$to      = 'eu.bergo@ig.com.br' . "\r\n";
$subject = 'O Assunto vai aqui';
$message = 'Hola hermanos ('.$nmsg.')';
$headers = 'From: bergo@marte.mg.gov.br' . "\r\n" .
    'Cc: eu.bergo@yahoo.co.uk, eu.bergo@marte.mg.gov.br ' . "\r\n" .
    'Reply-To: bergo@marte.mg.gov.br' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

global $g_error_mail;
if (! mail($to, $subject, $message, $headers)) {
  echo 'a) Houve alguma falha...<br>';
} else {
  echo 'B) Sem problema... ('.$nmsg.')<br>';
}
 // $headers);

Ao exibir os detalhes da mensagem no webmail na própria página do IG, temos:

de          bergo@marte.mg.gov.br
responder a bergo@marte.mg.gov.br
para        eu.bergo@ig.com.br
cc          eu.bergo@yahoo.co.uk,
paulo.bergo@marte.mg.gov.br
data        20 de maio de 2010 07:54
assunto     O Assunto vai aqui
enviado por marte.mg.gov.br

ocultar detalhes 07:54 (4 minutos atrás)

Hola hermanos (25)

A atual configuração do PostFix (mail.cf) é:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
myorigin = marte.mg.gov.br
# é o domínio... o "marte.mg.gov.br" do bergo@marte.mg.gov.br.

#myhostname = p01140044
myhostname = bergo

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

mydomain = marte.mg.gov.br

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myhostname = p01140044
#myhostname = bergo

mydestination = bergo@marte.mg.gov.br, marte.mg.gov.br, p01140044, localhost.localdomain, localhost
relayhost = smtp.marte.mg.gov.br
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.254.5
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Finalmente, último detalhe:

Meu computador não é o servidor de emails da empresa. Minha máquina tinha um XP+PHP5+IIS com um site de gerenciamento dos projetos da própria seção (streber-pm) e enviava os emails para as demais pessoas da seção numa boa... os problemas surgiram ao migrar tudo para o Ubuntu10.04...

O curioso é que até pela página original, agora dentro de um XP rodando numa VirtualBox dentro do Ubuntu, consegue enviar as mensagens (é o que está me "salvando" até agora!)... pois a necessidade e' realmente a de apenas enviar mensagens para os emails corporativos...

Ah... e para uso pessoal e demais comunicações internas ou externas, uso o próprio Evolution, sem problemas...

Então é isso...

Qualquer dica é bem recebida!

Grato!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fim do mistério!

 

Resolvido o problema... foi necessário que o administrador do servidor de email da corporação incluísse, na sua lista de "servidores confiáveis", a identificação do meu computador...

 

No final das contas, a melhor solução foi manter o PostFix+Mail+Mailx instalados. O PHP agora consegue enviar as mensagens normalmente, principalmente para os destinatários com conta no próprio domínio da corporação.

 

Não sei exatamente como meu computador (p01140144@marte.mg.gov.br) passou a ser "confiável" no servidor (o único smtp.marte.mg.gov.br), e nem quais são os programas ou recursos nesse servidor... assim que obter essa informação, complemento aqui...

 

Grato a todos!

 

Resolvido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.