为什么exim通过php发送/不发送来自服务器上不同用户的电子邮件?

时间:2016-03-23 11:52:26

标签: php apache freebsd exim

服务器有2个用户:admin和joe。两个用户属于同一组。 如果我尝试从属于admin的域(通过php脚本)发送电子邮件 - 一切正常。但是对于属于joe的域 - 函数mail()不发送电子邮件。

我在mail.log中启用了php.ini,看到php工作正常。

Apache / 2.4.16(FreeBSD)mpm-itk / 2.4.7-02

exim 4.86

/usr/local/etc/exim/passwd - 空

mainlog, paniclog - 没有错误

结果exim -bd -d+all

WHITELIST_D_MACROS unset
TRUSTED_CONFIG_LIST unset
12:54:37  8586 changed uid/gid: forcing real = effective
12:54:37  8586   uid=0 gid=0 pid=8586
12:54:37  8586   auxiliary group list: 0
12:54:37  8586 seeking password data for user "www": cache not available
12:54:37  8586 getpwnam() succeeded uid=80 gid=80
12:54:37  8586 seeking password data for user "mailnull": cache not available
12:54:37  8586 getpwnam() succeeded uid=26 gid=26
12:54:37  8586 seeking password data for user "root": cache not available
12:54:37  8586 getpwnam() succeeded uid=0 gid=0
12:54:37  8587 changed uid/gid: calling tls_validate_require_cipher
12:54:37  8587   uid=26 gid=6 pid=8587
12:54:37  8587   auxiliary group list: 6
12:54:37  8586 tls_validate_require_cipher child 8587 ended: status=0x0
12:54:37  8586 configuration file is /usr/local/etc/exim/configure
12:54:37  8586 log selectors = 0000cffe 00733801
12:54:37  8586 cwd=/etc 3 args: exim -bd -d+all
12:54:37  8586 trusted user
12:54:37  8586 admin user
12:54:37  8586 DSN: dnslookup propagating DSN
12:54:37  8586 DSN: disabled_domains propagating DSN
12:54:37  8586 DSN: disabled_users propagating DSN
12:54:37  8586 DSN: local_domains propagating DSN
12:54:37  8586 DSN: group_aliases propagating DSN
12:54:37  8586 DSN: aliases propagating DSN
12:54:37  8586 DSN: aliases_pipe propagating DSN
12:54:37  8586 DSN: local_users propagating DSN
12:54:37  8586 DSN: catchall_for_domains propagating DSN
12:54:37  8586 DSN: unknown_users propagating DSN
12:54:37  8586 DSN: autoreplay propagating DSN
12:54:37  8586 DSN: localuser propagating DSN
12:54:37  8586 DSN: a_dnslookup propagating DSN
12:54:37  8586 DSN: a_disabled_domains propagating DSN
12:54:37  8586 DSN: a_disabled_users propagating DSN
12:54:37  8586 DSN: a_local_domains propagating DSN
12:54:37  8586 DSN: a_aliases propagating DSN
12:54:37  8586 DSN: a_aliases_pipe propagating DSN
12:54:37  8586 DSN: a_local_users propagating DSN
12:54:37  8586 DSN: a_catchall_for_domains propagating DSN
12:54:37  8586 originator: uid=0 gid=0 login=root name=Charlie Root
12:54:37  8586 LOG: MAIN
12:54:37  8586   IPv6 socket creation failed: Protocol not supported
12:54:37  8586 LOG: MAIN
12:54:37  8586   Failed to create IPv6 socket for wildcard listening (Protocol not supported): will use IPv4
12:54:37  8586 LOG: MAIN
12:54:37  8586   socket bind() to port 25 for address (any IPv4) failed: Address already in use: waiting 30s before trying again (9 more tries)

1 个答案:

答案 0 :(得分:1)

默认情况下,除[FirstSuite] + mvn -s settings.xml -f java/pom.xml integration-test -P dev -Dmaven.repo.local=.repository -Dit.test=FirstSuite -Djava.io.tmpdir=java/target -Dlog.dir=java/target/FirstSuite [FirstSuite] Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=384m; support was removed in 8.0 [FirstSuite] [INFO] Scanning for projects... [FirstSuite] [ERROR] The build could not read 1 project -> [Help 1] [PmClientTestsuite] [ERROR] [FirstSuite] [ERROR] The project (/opt/.jenkins/workspace/MyProject@16/java/pom.xml) has 1 error [FirstSuite] [ERROR] Non-readable POM /opt/.jenkins/workspace/MyProject@16/java/pom.xml: /opt/.jenkins/workspace/MyProject@16/java/pom.xml (Datei oder Verzeichnis nicht gefunden) [FirstSuite] [ERROR] [FirstSuite] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [FirstSuite] [ERROR] Re-run Maven using the -X switch to enable full debug logging. [FirstSuite] [ERROR] [FirstSuite] [ERROR] For more information about the errors and possible solutions, please read the following articles: [FirstSuite] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException exim_user之外的所有用户都不受信任,因此无法向其他用户发送邮件。因此,当exim_group调用exim时,它被迫使用sender_address,如php - 因为用户www@host用于启动apache / nginx,调用调用exim的php。

您必须将www用户添加到exim的wwwtrusted_users。另一种方法是使用SMTP会话而不是直接exim调用。只需将您的PHP配置为使用真正的IP,您的exim正在监听连接,这已经足够了。