2016-03-23 2 views
0

На сервере есть 2 пользователя: admin и joe. Оба пользователя принадлежат к тем же группам. Если я пытаюсь отправить электронную почту с доменов (через php-скрипт), которые принадлежат администратору, все работает. Но для доменов, принадлежащих joe-функции, mail() не отправляет электронное письмо.Почему exim посылает/не отправляет электронные письма от разных пользователей на сервере через php?

Включить 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) 

ответ

0

По умолчанию все пользователи, кроме exim_user и exim_group, не доверяют, поэтому не могут отправлять сообщения от других пользователей. Поэтому, когда exim вызывается php, он вынужден использовать sender_address как [email protected] - потому что пользователь www используется для запуска apache/nginx, которые вызывают php, которые вызывают exim.

Вы должны добавить пользователя www в exim's trusted_users или trusted_groups. Другой подход заключается в использовании SMTP-сессии вместо прямого вызова exim. Просто настройте свой PHP для использования реального IP-адреса, где ваш exim прослушивает соединение, и этого достаточно.

+0

Это ничего не объясняет, почему php отправляет электронные письма от администратора и не отправляет их от joe. trusted_users уже www. Я пытаюсь изменить trusted_users и trusted_groups, но без результата. –

Смежные вопросы