Настраиваем SMTP сервер на сайте для отправки почты. Debian, Exim4, Nginx, php7.1.4.
Итак, начнем по порядку.
Я использовал скомпилированный php7.1.4, путь будет отличаться. Настройка производилась по гайду https://thedrot.ru/php7-3-18-mysql-phpmyadmin-nginx-orangepi/
Для начала надо проверить что присутствует на хостинге. Я выбрал путь через PHP.
Создаем файл в корне сайта.
Test.php с содержимым.
?php phpinfo(); ?
Заходим по урлу «domen.ku/Test.php»
Нам необходима найти строчки
mail.log no value mail.add_x_header On mail.force_extra_parameters no value sendmail_from no value sendmail_path /usr/sbin/sendmail -t -i ( не обязательно менять если команда sendmail работает) SMTP localhost smtp_port 25
Настройки можно найти в /usr/local/php-fpm/lib/php.ini(Если настройка была из прежней статьи)
sendmail_path = «/usr/sbin/sendmail -t -i»
Проверяем стоит ли служба sendmail
пишем команду >
sendmail
Если службы нету, то ставить ее не нужно.
смотрим что выдает.
Далее я создал файлик проверки функции.
test1.php
?php if ( function_exists( 'mail' ) ) { echo 'mail() is available'; } else { echo 'mail() has been disabled'; } ?
У меня было все ок.
Был создан еще один файл проверки отправки почты.
?php /* * Enable error reporting */ ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); /* * Setup email addresses and change it to your own */ $from = "[email protected]"; $to = "[email protected]"; $subject = "Simple test for mail function"; $message = "This is a test to check if php mail function sends out the email"; $headers = "From:" . $from; /* * Test php mail function to see if it returns "true" or "false" * Remember that if mail returns true does not guarantee * that you will also receive the email */ if(mail($to,$subject,$message, $headers)) { echo "Test email send."; } else { echo "Failed to send."; } ?
На нем был затык, письмо фейлилось.
вводим команду >
У меня был установлен sendmail , вводим команду.
stat /usr/sbin/sendmail
Видно что письмо создается и сохраняется по адресу
/etc/alternative/sendmail
Там находился лог отправки писем.
Сендмайл по факту не нужен, его удаляем.
apt-get remove sendmail
Устанавливаем exim4
apt-get install exim4
Для запуска службы будем использовать команду
/etc/init.d/exim4 start
Произведем настройку exim командой
dpkg-reconfigure exim4-config
1 отправка почты через smarthost; локальная почта отсутствует
2 Почтовое имя системы: mydomain.ru
3 IP-адреса, с которых следует ожидать входящие соединения SMTP: 127.0.0.1 ; ::1
4 Другие места назначения, для которых должна приниматься почта: пусто
5 Видимое доменное имя локальных пользователей: mydomain.ru
6 IP-адрес или имя хоста являющегося исходящим smarthost: пусто
7 Сокращать количество DNS-запросов до минимума (дозвон по требованию)?: нет
8 Разделить конфигурацию на маленькие файлы?: нет
9 Получатель почты, адресованной root и postmaster: пусто
Далее необходимо привязать адрес электронной почты к пользователю, от имени которого будет отправляться корреспонденция. Это делается в файле /etc/email-addresses:
nano /etc/email-addresses
Прописываем, например:
user: [email protected] otheruser: [email protected] www-data: [email protected] root: [email protected]
Необходимо создать файл /etc/exim4/hubbed_hosts в нем будут прописываться MX записи доменов, пример:
yandex.ru: mx.yandex.ru google.com: ASPMX.L.GOOGLE.COM:ALT1.ASPMX.L.GOOGLE.COM
Также нужно проверить /etc/exim/exim4.conf.template
dnslookup: debug_print = "R: dnslookup for $local_part@$domain" driver = dnslookup domains = +relay_to_domains transport = remote_smtp same_domain_copy_routing = yes # ignore private rfc1918 and APIPA addresses ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 : 172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 : 255.255.255.255 no_more
Перезагружаем службу.
/etc/init.d/exim4 restart
Проверить отправку почты через exim4 в консоли можно с помощью команды:
echo "test mail" | mail -s "Test Mail" [email protected]
Если письмо не пришло смотрим лог /var/log/exim4/mainlog
Замороженные письма в очереди можно удалить командой.
exim -bpu | grep frozen | awk {'print $3'} | xargs exim -Mrm
Список очереди команда.
exim -bp
Свежие комментарии