使用来自Docker容器的PHP sendmail通过主机Postfix发送

嗨,大家好,这里是简单的问题:我想通过我的主机后缀安装发送来自我的Alpine-PHP-Fpm容器的邮件。

重点回顾

PHP-Fpm容器 – > Sendmail – >主机PostFix – >通过SMTP发送

但我得到sendmail: can't connect to remote host (127.0.0.1): Connection refused

这是Postfixconfiguration:

 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:no-reply@MYDOMAIN.com: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 

这里是php.ini邮件部分:

 [mail function] SMTP = localhost smtp_port = 25 sendmail_path = "/usr/sbin/sendmail -t -i" mail.add_x_header = On 

是否有任何端口,我需要打开我的docker撰写文件或在主机防火墙设置?

非常感谢!

我不知道使用主机的configuration/后缀,但是我可以build议一个替代的解决scheme,可能工作。 添加一个后缀容器,并将configuration从主机复制到容器:

 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 

然后,您可以使用smtp作为您的邮件主机/传输和用户/从环境中传递。

我不是一个容器的专家,但如果我理解正确,你正在尝试访问容器内的127.0.0.1(php.ini localhostconfigurationparsing为127.0.0.1),我假设不是主机地址,它指向容器内部。

找出主机IP并在php.ini中进行更改:

 [mail function] SMTP = host_address smtp_port = 25 
Interesting Posts