Исходная информация: Если вы настроили локальный сервер Apache для целей разработки, вы можете столкнуться с проблемой, когда sendmail занимает много времени (как минимум, одна минута) для отправки электронной почты. Это очень неприятно, если вы пытаетесь отладить проблему с созданным вами письмом.
В Интернете есть несколько сообщений на форуме, которые обсуждают эту проблему. Однако ни одна из тем не описала, что делать достаточно подробно для моих ограниченных знаний. Вот шаги, которые работали для меня:
1) найдите ваше имя хоста (если вы его забыли) с помощью этой команды:
:~$ cat /hosts/hostname
myhostname
2) отредактируйте файл /etc/hosts
и убедитесь, что в первой строке указано следующее:
127.0.0.1 localhost.localdomain localhost myhostname
3) отредактируйте файл конфигурации sendmail ( /etc/mail/sendmail.cf
в Ubuntu) и раскомментируйте строку#O HostsFile=/etc/hosts
4) Перезагрузите компьютер. Компьютер должен загружаться намного быстрее, а функция mail () должна возвращаться почти немедленно. ОДНАКО, электронные письма фактически не будут отправлены, если вы не выполните шаг 5.
5) Каждый раз, когда вы используете функцию mail, вы должны использовать опцию sendmail '-f'. Например:
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
Мой вопрос к моим коллегам-разработчикам серверов:
Какие дальнейшие изменения можно внести, чтобы мне не приходилось использовать опцию sendmail -f? Хотя добавить параметр -f не очень сложно, проблема заключается в том, что ваша CMS (например, Drupal) не использует параметр -f при отправке почты. Вам нужно взломать основной модуль, чтобы добавить эту опцию.
cat /etc/hostname