Send email on testing docker container with php and sendmail

后端 未结 2 904
广开言路
广开言路 2021-02-04 19:26

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 w

相关标签:
2条回答
  • 2021-02-04 19:56

    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=yourAdmin@email.com" >> /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=your@gmail.com" >> /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.ini
    

    For testing inside php sendmail container :

    echo "Un message de test" | mail -s "sujet de test" mailSendingAdresse@email.com
    

    I succeed with the help of this two documents :

    • https://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server
    • https://github.com/cmaessen/docker-php-sendmail/blob/master/Dockerfile
    0 讨论(0)
  • 2021-02-04 19:57

    If 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.ini
    

    Add 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 my@mail.com
    password "YourAwesomeStr0ngP4zzw0rd"
    from "my@mail.com"
    logfile /var/log/msmtp.log
    

    note: 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:

    • https://wiki.debian.org/msmtp
    • https://owendavies.net/articles/setting-up-msmtp/
    • https://wiki.archlinux.org/index.php/msmtp#Send_mail_with_PHP_using_msmtp
    • linux msmtp configuration sends from shell but fails from PHP/apache
    0 讨论(0)
提交回复
热议问题