# php mail() nie dziala z ssmtp i gmail

## galandilias

Czesc,

Mam problem z poprawna konfiguracja php ssmtp i gmaila. Pobralem i skonfigurowalem ssmtp wydaje mi sie poprawnie poniewaz odpalone z bash:

```
echo "This is a test" | mail -s "Test" mail@gmail.com
```

wysyla pieknie maila, za to jak probuje z takiego php

```
<?php

$res = mail ( "mail@gmail.com", "Test" , "Hello World!" );

var_export( $res );

?>
```

odpalic wyslanie maila to dostaje takie cos w logach:

```
Jan 29 19:19:45 mnet-proliant apache2: mail() on [/var/www/localhost/htdocs/test.php:3]: To: mail@gmail.com -- Headers:

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: Creating SSL connection to host

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: 220 mx.google.com ESMTP b2sm21276967eep.9 - gsmtp

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: EHLO nowakmarcin.com

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: 250 ENHANCEDSTATUSCODES

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: STARTTLS

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: 220 2.0.0 Ready to start TLS

Jan 29 19:19:45 mnet-proliant sSMTP[17353]: Cannot open smtp.gmail.com:587
```

konfiguracja ssmtp.conf:

```
root=postman@nowakmarcin.com

mailhub=smtp.gmail.com:587

AuthUser=postman@nowakmarcin.com

AuthPass=mypass

UseSTARTTLS=YES

rewriteDomain=nowakmarcin.com

hostname=nowakmarcin.com

FromLineOverride=YES

UseTLS=YES

Debug=YES
```

konfiguracja php.ini:

```
sendmail_path = "/usr/sbin/ssmtp -t -i"

mail.add_x_header = On

mail.log = syslog
```

Prosze o pomoc bo juz mi sie pomysly wyczerpaly  :Smile: 

PS. konfiguracja jak widac w plikach jest w oparciu o apps.google.com - tam mam skrzynke

----------

## SlashBeast

User na ktorym pracuje php/apache ma dostep do sieci? Sprawdz z niego.

----------

## galandilias

a jak to zrobic?  :Smile:  nie moge zrobic 

```
su apache
```

 bo to konto jest nologin

----------

## SlashBeast

su apache --shell=/bin/bash powinno zadzialac. Nie masz jakis zaczarowanych regulek iptables tam? Moze apache pracuje w chroocie, w ktorym nie ma libnss przez co nie potrafi zresolvowac DNS'a i koniec koncow konczy sie na takim bledzie?

----------

## galandilias

ok z apache mail nie idzie  :Smile: 

```
SSL_connect: Success

send-mail: Cannot open smtp.gmail.com:587

Can't send mail: sendmail process failed with error code 1
```

co dalej?  :Smile: 

Apache raczej nie pracuje na chroot w iptables tez sam nic nie zmienialem  :Smile:  jakby cos to podaj konfigi ktore Ci potrzebne to wkleje

----------

## SlashBeast

a ping dziala na smtp.gmail.com? Sprawdz tez uprawnienia

```
ls -ld /usr/sbin/ssmtp /etc/ssmtp /etc/ssmtp/ssmtp.conf /etc/resolv.conf
```

----------

## galandilias

ping dziala  :Smile: 

uprawnienia mam takie:

```
-rw-r--r-- 1 root root    149 Jan 29 17:32 /etc/resolv.conf

drwxr-xr-x 2 root root   4096 Jan 29 17:16 /etc/ssmtp

-rw-r----- 1 root ssmtp  1589 Jan 29 18:20 /etc/ssmtp/ssmtp.conf

-rwx--s--x 1 root ssmtp 39576 Jan 29 17:08 /usr/sbin/ssmtp

```

zrobilem 

```
chmod a+r /etc/ssmtp/ssmtp.conf
```

 ale dalej bez zmian

----------

## SlashBeast

ping z usera apache smiga, czyli to nie dnsy. Ale mimo wszystko zamien smtp.gmail.com na ip 74.125.136.109 lub 74.125.136.108 i sprawdz ponownie.

Dalej, skoro z roota dzialal to propnowal bym wrzucic strace i dac:

```
echo -e 'Subject: testowy mail\n\nBodywiadomosci' | strace sendmail TWOJ_ADRES@DOMENA 2>&1 | tee user.log
```

 i analogicznie, zrobic to na roocie i na userze a potem sprawdzac, ktore liniji sa rozne.

----------

## galandilias

pingi na IPki chodza

logi z Twojej komendy znajdziesz tu:

http://nowakmarcin.com/logs/

widze roznice ale mi to nie mowi za wiele :/

----------

## SlashBeast

nie mam pomyslu, wlacz debug w ssmtp.conf i zobacz w sysloga jakiego tam masz co on mowi.

----------

## galandilias

logi juz zbieram  :Smile:  oto one:

Proba dla apache:

```
Jan 31 14:41:53 mnet-proliant su[8729]: Successful su for apache by root

Jan 31 14:41:53 mnet-proliant su[8729]: + /dev/pts/0 root:apache

Jan 31 14:41:53 mnet-proliant su[8729]: pam_unix(su:session): session opened for user apache by root(uid=0)

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: Creating SSL connection to host

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: 220 mx.google.com ESMTP j46sm4104282eeo.3 - gsmtp

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: EHLO nowakmarcin.com

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: 250 ENHANCEDSTATUSCODES

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: STARTTLS

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: 220 2.0.0 Ready to start TLS

Jan 31 14:42:01 mnet-proliant sSMTP[8736]: Cannot open smtp.gmail.com:587
```

Proba na root:

```
Jan 31 14:42:07 mnet-proliant su[8729]: pam_unix(su:session): session closed for user apache

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: Set MailHub="smtp.gmail.com"

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: via SMTP Port Number="587"

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: Creating SSL connection to host

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 220 mx.google.com ESMTP o3sm7452211eem.15 - gsmtp

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: EHLO nowakmarcin.com

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 250 ENHANCEDSTATUSCODES

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: STARTTLS

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 220 2.0.0 Ready to start TLS

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: SSL connection using ECDHE-RSA-RC4-SHA

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: EHLO nowakmarcin.com

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 250 ENHANCEDSTATUSCODES

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: AUTH LOGIN

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 334 VXNlcm5hbWU6

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: cG9zdG1hbkBub3dha21hcmNpbi5jb20=

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 334 UGFzc3dvcmQ6

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: OVI0VmFtYXM=

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: 235 2.7.0 Accepted

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: MAIL FROM:<xxxxxxxx@nowakmarcin.com>

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: 250 2.1.0 OK o3sm7452211eem.15 - gsmtp

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: RCPT TO:<xxxxxxxx@gmail.com>

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: 250 2.1.5 OK o3sm7452211eem.15 - gsmtp

Jan 31 14:42:38 mnet-proliant sSMTP[8757]: DATA

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: 354  Go ahead o3sm7452211eem.15 - gsmtp

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: Received: by nowakmarcin.com (sSMTP sendmail emulation); Thu, 31 Jan 2013 14:42:37 +0100

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: From: "root" <xxxxxxxx@nowakmarcin.com>

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: Date: Thu, 31 Jan 2013 14:42:37 +0100

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: Subject: testowy mail

Jan 31 14:42:39 mnet-proliant sSMTP[8757]:

Jan 31 14:42:39 mnet-proliant sSMTP[8757]: Bodywiadomosci

Jan 31 14:42:40 mnet-proliant sSMTP[8757]: .

Jan 31 14:42:41 mnet-proliant sSMTP[8757]: 250 2.0.0 OK 1359639761 o3sm7452211eem.15 - gsmtp

Jan 31 14:42:41 mnet-proliant sSMTP[8757]: QUIT

Jan 31 14:42:41 mnet-proliant sSMTP[8757]: 221 2.0.0 closing connection o3sm7452211eem.15 - gsmtp

Jan 31 14:42:41 mnet-proliant sSMTP[8757]: Sent mail for xxxxxxxx@nowakmarcin.com (221 2.0.0 closing connection o3sm7452211eem.15 - gsmtp) uid=0 username=root outbytes=377
```

----------

## SlashBeast

A wez stworz usera typo 'asd' z grupa glowna users i z niego przetestuj.

```
useradd -m -g users asd
```

pokaz tez z jakimi flagami kompilowales ssmtp (use i cflags).

----------

## galandilias

z asd tez nie idzie... :/

[ebuild   R    ] mail-mta/ssmtp-2.64-r2  USE="ipv6 mta ssl -gnutls" 0 kB

tak sie buduje ssmtp

----------

## SlashBeast

Sprawdz z gnutls. Wydaje mi sie, ze bez tego nie powinno w ogole SSL dzialac tam.

----------

## galandilias

No - skompilowalem i patrz Pan  :Razz: 

```
Feb  1 15:44:46 mnet-proliant kernel: sendmail[32256]: segfault at 8 ip 00007fd56e4b4471 sp 00007fff042cad88 error 4 in libc-2.15.so[7fd56e42f000+1a5000]
```

to lepiej czy gorzej?  :Smile: 

z root-a dalej dziala

----------

## Jacekalex

Spróbuj użyć zamiast ssmtp, mail-mta/esmtp, u mnie z gmailem działał jeszcze niedawno (obecnie mam Posfixa), całość konfiguracji ustawia się w  /etc/esmtprc, kompilacja na kompilatorze gcc-4.6.3 hardened,  grsec i pax (mprotect i noexec) w jaju też nie stanowiły problemu.

```
Jan 31 14:42:37 mnet-proliant sSMTP[8757]: AUTH LOGIN

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 334 xxxxxxxxxxxxxxxxxx

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: xxxxxxxxxxxxxxxxxxxxxx

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: 334 xxxxxxxxxxxxxxxx

Jan 31 14:42:37 mnet-proliant sSMTP[8757]: xxxxxxxxxxxx= 
```

I wyczyść dane logowania z twojego logu oraz zmień hasło do konta na gmailu, przecież z AUTH-LOGIN może  odkodować każdy.   :Twisted Evil: 

Edit:

Jeśli wysyłasz z TLS (gmail nie pozwoli na autoryzację bez ssl/tls), to lepiej puść pocztę przez port 465/smtps z ssl.

Szybciej to działa, bo najpierw jest nawiązywane połączenie ssl, a dopiero potem zaczyna się dialog smtp, nie trzeba osobno wołać o starttls.

Jak coś nie działa z smtp, to radzę najpierw przetestować połączenie programem net-mail/swaks, ten najlepiej diagnozuje połączenia smtp.

Pozdrawiam

 :Cool: 

----------

