Send email on testing docker container with php and sendmail
Matthew Martinez
I'm on ubuntu 16.04. I have a (testing) docker (docker-compose) container running php 5.6 and apache 2.4.
On the production platform (without docker) the mail is sent with sendmail.
How to send test email on docker container (with sendmail)?
Thanks in advance for responses.
12 Answers
It works.
In Dockerfile :
# sendmail config
############################################
RUN apt-get install -q -y ssmtp mailutils
# root is the person who gets all mail for userids < 1000
RUN echo "root=" >> /etc/ssmtp/ssmtp.conf
# Here is the gmail configuration (or change it to your private smtp server)
RUN echo "mailhub=smtp.gmail.com:587" >> /etc/ssmtp/ssmtp.conf
RUN echo "AuthUser=" >> /etc/ssmtp/ssmtp.conf
RUN echo "AuthPass=yourGmailPass" >> /etc/ssmtp/ssmtp.conf
RUN echo "UseTLS=YES" >> /etc/ssmtp/ssmtp.conf
RUN echo "UseSTARTTLS=YES" >> /etc/ssmtp/ssmtp.conf
# Set up php sendmail config
RUN echo "sendmail_path=sendmail -i -t" >> /usr/local/etc/php/conf.d/php-sendmail.iniFor testing inside php sendmail container :
echo "Un message de test" | mail -s "sujet de test" I succeed with the help of this two documents :
3If it says:
"Package 'ssmtp' has no installation candidate"
You can use msmtp instead.
Add the following to your dockerfile
# sendmail config
#################
ARG SMTP_PASSWORD=not_provided
# install
RUN apt-get install -q -y msmtp mailutils
# config
COPY msmtprc /etc/msmtprc
RUN chmod 600 /etc/msmtprc
RUN chown www-data:www-data /etc/msmtprc
ARG SMTP_PASSWORD=not_provided
RUN sed -i "s|YourAwesomeStr0ngP4zzw0rd|$SMTP_PASSWORD|g" /etc/msmtprc
# Set up php sendmail config
RUN echo "sendmail_path=/usr/bin/msmtp -t" >> /etc/php/7.3/apache2/conf.d/php-sendmail.iniAdd a msmtprc file to your docker build context:
account default
host mail.yoursmtpserver.com
port 587
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck on
auth on
user
password "YourAwesomeStr0ngP4zzw0rd"
from ""
logfile /var/log/msmtp.lognote: Some changes were made in order to make it work with my particular setup (branching FROM eboraas/apache-php). This applies particularily to the lines:
- ARG SMTP_PASSWORD=not_provided
- RUN chown www-data:www-data /etc/msmtprc
- RUN sed -i "s|YourAwesomeStr0ngP4zzw0rd|$SMTP_PASSWORD |g" /etc/msmtprc
- RUN echo "sendmail_path=/usr/bin/msmtp -t" >> /etc/php/7.3/apache2/conf.d/php-sendmail.ini
You may need to adapt paths, passwords and so on to fit your needs. Keep in mind to set the SMTP_PASSWORD build argument from environment (e.g. SMTP_PASSWORD=<secret> docker-compose build) if you want to use this solution straight away.
Useful resources:
1