Отправка почты из docker контейнера



 RUN apt-get update && \
  apt-get install -y msmtp && \
  apt-get clean && \
  echo "account yandex" >> ~/.msmtprc && \
  echo "logfile ~/.msmtp.log" >> ~/.msmtprc && \
  echo "host smtp.yandex.ru" >> ~/.msmtprc && \
  echo "port 587" >> ~/.msmtprc && \
  echo "from no-reply@serov.eu" >> ~/.msmtprc && \
  echo "keepbcc on" >> ~/.msmtprc && \
  echo "auth on" >> ~/.msmtprc && \
  echo "user no-reply@serov.eu" >> ~/.msmtprc && \
  echo "password Uzum2G9pkZt" >> ~/.msmtprc && \
  echo "tls on" >> ~/.msmtprc && \
  echo "tls_starttls on" >> ~/.msmtprc && \
  echo "tls_certcheck off" >> ~/.msmtprc && \
  chmod 0600 ~/.msmtprc && \
  cp -p ~/.msmtprc /etc/.msmtp_php && \ 
  chown www-data:www-data /etc/.msmtp_php && \ 
  touch /var/log/msmtp.log && \ 
  chown www-data:www-data /var/log/msmtp.log
 

в php.ini

sendmail_path = "/usr/bin/msmtp -C /etc/.msmtp_php --logfile /var/log/msmtp.log -a yandex -t"

Другие конфиги



account yandex
 logfile /var/log/msmtp.log
 host smtp.yandex.ru
 port 587
 from mail@yandex.ru
 keepbcc on
 auth on
 user mail@yandex.ru
 password пароль
 tls on
 tls_starttls on





account yahoo
 tls on
 tls_starttls off
 tls_certcheck off
 auth on
 host smtp.mail.yahoo.com
 user user1
 from user1@yahoo.com
 password yourYahooPa5sw0rd





account gmail
 tls on
 tls_certcheck off
 auth on
 host smtp.gmail.com
 port 587
 user user1@gmail.com
 from user1@gmail.com
 password yourgmailPassw0rd



Тестирование:


echo -e "test message" | /usr/bin/msmtp --debug -t -i name@site.ru

Sendmail-заглушка для Linux

Оригинал статьи тут — http://habrahabr.ru/post/49665/

Заглушка для почты на сервере разработки:

#!/bin/sh 
prefix="/var/mail/sendmail/new"
numPath="/var/mail/sendmail"

if [ ! -f $numPath/num ]; then 
echo "0" > $numPath/num 
fi 
num=`cat $numPath/num` 
num=$(($num + 1)) 
echo $num > $numPath/num 

name="$prefix/letter_$num.txt"
while read line 
do 
echo $line >> $name
done 
chmod 777 $name
/bin/true

Скрипт сохраняем в папку /usr/bin под любым угодным вам именем и делаем исполняемым (sudo chmod +x). Я использовал fake_sendmail.sh.

Теперь все исходящие письма будут складываться в /var/mail/sendmail. Так же необходимо выставить для папки права на запись. (chmod 777 -R /var/mail/sendmail).

Примечание:
Для сбора писем почтовиком (о чем ниже), нужно в этой папке создать следующую структуру папок:
/var/mail/sendmail/
— cur
— new
— tmp
И дать права на запись.

Настройка PHP.
У меня стоит Кубунта, так что все пути относительно нее. Итак, находим в папке /etc/php5/apache2 файл php.ini и меняем в нем путь к sendmail на:

sendmail_path = /usr/bin/fake_sendmail.sh.