Я выполнил эти инструкции, и у меня это работает из командной строки. Я запускаю тест из командной строки так:
echo "Just testing my sendmail gmail relay" \
| mail -s "Sendmail gmail Relay" my-email@example.com
Есть задержка, но в конечном итоге письмо отправляется ...
Когда я вызываю mail () из php, он выходит из строя или умирает с ошибкой «504 Gateway Time-out».
В статье говорится: «Если вы столкнетесь с задержками замены после выполнения вышеуказанной команды, наиболее вероятной причиной является то, что вы не настроили свой хост с полным доменным именем. Проверьте свои журналы на наличие предупреждения:»
В журналах ничего не нахожу. Я перезапустил сервер, но не могу придумать, что еще попробовать ... Я считаю, что хосты настроены правильно:
127.0.1.1 server-name
127.0.0.1 localhost
Я не знаю, что еще попробовать ...
Какие-нибудь подсказки, идеи или советы?
Ни то, ни другое server-name
ни localhost
полностью квалифицированы; вместо этого полное имя хоста выглядит как server-name.example.org
или localhost.localdomain
. sendmail
покажет, какие доменные имена он использует с помощью команды
sendmail -d0.1 < /dev/null
Также может быть полезно найти журналы электронной почты в вашей системе (это зависит от syslog
конфигурация демона) и посмотрите, какой именно sendmail
процесс (или процессы) жалуются на что, поскольку я не знаю, проходит ли ваш PHP-код sendmail
как и ваш пример командной строки (sendmail
-> MSA
-> MTA
) или отправляется ли он непосредственно в MTA
через SMTP
.
Sendmail сильно зависит от правильно настроенного DNS; вы можете попытаться обойти это через
FEATURE(`nocanonify', `canonify_hosts')
define(`confDIRECT_SUBMISSION_MODIFIERS', `C')
в submit.mc
конфигурация, хотя это может привести к поломке (и без журналов я не знаю, является ли это источником проблемы). Вам также может потребоваться настроить маскарад, чтобы адреса были должным образом стандартизированы, прежде чем они будут отправлены в Gmail.
Еще один вариант - отправить почту через что-то вроде ssmtp
.