Use PHP sendmail from Docker container to send through host Postfix
I'm not sure about using the host's config/postfix however I can suggest an alternative solution that may work just as well. Add a postfix container and copy the configs from the host to the container:
services:
application:
image: some-company/some-application
environment:
- APPLICATION_ENV
ports:
- 80:80
smtp:
image: namshi/smtp
environment:
- MAILNAME
- SMARTHOST_USER
- SMARTHOST_PASSWORD
volumes:
- /etc/postfix/main.cf:/etc/postfix/main.cf
ports:
- 25:25
Then you can use smtp
as your mailer host / transport and the user/pass from the environment.
javal88
BY DAY: Tech enthusiast BY NIGHT: Drummer HOBBIES: Music, drumming, trekking, nerding #SOreadytohelp
Updated on July 13, 2022Comments
-
javal88 almost 2 years
I want to send mail from my Alpine-PHP-Fpm container using my host postfix installation.
RECAP
PHP-Fpm Container -> Sendmail -> PostFix on host -> Sending via SMTP
But I get
sendmail: can't connect to remote host (127.0.0.1): Connection refused
Here is the Postfix config:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no 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 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = MYDOMAIN.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = localhost.com, localhost # SMTP authentication settings smtp_sasl_auth_enable = yes smtp_sasl_password_maps = static:[email protected]:SECRETPSW smtp_sasl_security_options = noanonymous smtp_tls_security_level = may #header_size_limit = 4096000 relay_destination_concurrency_limit = 20 # Limit DOS Attacks default_process_limit = 100 smtpd_client_connection_count_limit = 10 smtpd_client_connection_rate_limit = 30 queue_minfree = 20971520 header_size_limit = 51200 message_size_limit = 10485760 smtpd_recipient_limit = 100 # Default relayhost setting relayhost = smtp.MYDOMAIN.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 172.18.0.3 # Fpm container IP mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = 172.18.0.1 # Docker0 bridge IP inet_protocols = all
And here is the php.ini mail section:
[mail function] SMTP = localhost smtp_port = 25 sendmail_path = "/usr/sbin/sendmail -t -i" mail.add_x_header = On
Are there any ports that I need to open in my docker-compose file or in the host firewall settings?