Отправка почты через SMTP с локального сервера. Что делать, если email не доходит
Рассказываем про ещё один полезный инструмент на роутерах MikroTik - отправку e-mail сообщений по протоколу SMTP. Данный инструмент может быть использован для отправки на почту периодических бэкапов или же задействован для написания каких-нибудь скриптов.
- В интерфейсе WinBox, утилита Email расположена в разделе Tools → Email :
- Из командной строки - /tool e-mail .
Первым делом нужно настроить сервер исходящей почты по протоколу SMTP. Доступны следующие параметры настройки:
- address - IPv4/v6 адрес, SMTP сервера;
- from - имя или название почтового ящика, который будет показан получателю;
- password - пароль, который используется для аутентификации на SMTP сервере. В этом случае аутентификации не будет шифроваться. Для включения шифрования можно использовать функцию start-tls;
- port - порт SMTP сервера, по умолчанию 25;
- start-tls - может принимать значения no, yes и tls-only - разрешает только TLS шифрования без поддержки SSL;
- user - имя пользователя, которое будет использоваться для аутентификации на SMTP сервере.
Когда сервер будет настроен, можно начинать отправлять письма. Все параметры при отправке писем идут после команды /tool e-mail send:
- body - тело письма
- cc - данный параметр позволяет поставить в копию дополнительных получателей;
- file - позволяет добавлять один или несколько файлов во вложении к письму;
- from - название или почтовый адрес, который будет показан как отправитель. Если ничего не указано, то будет взят from, который указывался при настройке сервера SMTP;
- password - пароль, который используется для аутентификации на SMTP сервере. Если ничего не указано, то будет взят password, который указывался при настройке сервера SMTP;
- port - порт SMTP сервера. Если ничего не указано, то будет взят port, который указывался при настройке сервера;
- server - адрес SMTP сервера. Если не указано, то используется параметр сервера, указанный при настройке;
- start-tls - использовать ли TLS шифрование;
- subject - тема письма;
- to - адрес получателя, которому предназначено письмо;
- user - имя пользователя, для аутентификации на сервере. Если не указано, то будет использоваться user из настроек сервера.
Теперь давайте применим механизм отправки писем на практике и создадим скрипт, который будет каждый день высылать файл с резервной копией конфигурации нам на почту.
Вот как настройка будет выглядеть в командной строке:
Tool e-mail> set server=192.168.1.34 set port=25 from=”mnmikrotik@mndomain.ru”
Теперь добавим новый скрипт, который будет делать бэкап конфигурации роутера:
/export file=export /tool e-mail send to="mnadmin@mndomain.ru"subject="$ export" \ body="$ configuration file" file=export.rsc
Добавим скрипт на выгрузку конфигурации в планировщик:
/system scheduler add on-event="export-send" start-time=00:00:00 interval=24
Готово, теперь каждый день нам на почту mnadmin@mndomain.ru будет приходить свежая выгрузка резервной копии конфигурации нашего роутера.
Для того, чтобы настроить отправку писем на почтовый ящик, требующий TLS шифрования (как например Google mail), нужно настроить следующие параметры отправителя:
/tool e-mail set address= 192.168.1.34 set port=587 set from=mnaddress@gmail.com set user= mikrotik set password= supersecurepass
При отправке письма на такой ящик, необходимо указать параметр start-tls.
Send to=mnadmin@mndomain.ru subject="HW!" body="Hello World!" start-tls=yes
Если Вы предпочитаете настраивать роутер с помощью интерфейса WinBox, то откройте Tools → Email и настройте параметры сервера:
Добавляем скрипт в планировщик, чтобы он срабатывал каждый день:
Полезна ли Вам эта статья?
Пожалуйста, расскажите почему?
Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!
Если вы на своём сайте активно используете email, а именно формы обратной связи, например, Contact Form 7 , форумы с рассылкой сообщений или иные социальные плагины, то наверняка часто сталкивались с такой проблемой, как пропадание писем, попадание их в спам и т.д. Как этого избежать, поговорим далее.
Почему email не доставляются и пропадают
Письма могут пропадать в силу нескольких причин. Первая и самая главная — ваш email приняли за спам. Любой серьёзный почтовый сервис имеет свой мощный антиспам-модуль c эвристическим анализом содержимого email, не говоря уже о чёрном списке адресов. Поэтому, не переусердствуйте с рассылкой, чтобы не попасть в чёрный список спамеров.
Также, в спам попадут не подписанные электронной подписью письма. То есть, любой может отправить фишинговое письмо, скажем, от имени
, однако, это будет безуспешно, т.к. отправитель вряд ли сможет подтвердить, что оно было отправлено с этого адреса. Для проверки легитимности используются подписи DKIM (DomainKeys Identified Mail) и SPF (Sender Policy Framework) записи.
Что сделать, чтобы письма доходили до адресата
Не переусердствуйте с рассылкой и настройте свой SMTP-сервер, чтобы исходящие email подписывались DCIM- и SPF-подписями. Вы можете настроить свой SMTP сервер, но чтобы не заморачиваться с настройкой, можно привязать домен к Яндекс.ПДД или Google Apps for Business и отправлять email через их сервис, и тогда все нужные заголовки будут прописываться автоматом. Но тут есть 2 оговорки
- Ваш хостинг-провайдер должен разрешать исходящие соединения, чтобы была возможность подключиться к внешнему SMTP серверу
- Объём рассылки не превышает 2000 писем в день. Это лимит Google, у Yandex вряд ли больше
Если вы укладываетесь в вышеуказанные рамки, тогда вперёд, настроим подключение
Как настроить подключение SMTP
Чтобы настроить нормальную отправку писем, нужно установить плагин WP Mail SMTP . Он позволяет переконфигурировать стандартный PHP Mailer так, чтобы была возможность подключаться к SMTP серверу. Также, советую использовать его, если вы пользуетесь локальным сервером.
Настройка будет происходить под Яндекс. Гугл отметается, так как теперь там нет бесплатных тарифов
Настройка WP Mail SMTP
А вот описание опций
- From Email — email отправителя. Вводим логин от почты полностью как на изображении вверху
- From Name — Имя отправителя. Можете поставить сюда что хотите, например, адрес вашего сайта
- Mailer — выбираем Send all WordPress emails via SMTP
- Return Path — оставляем пустым
- SMTP Host — адрес SMTP сервера. Вводим smtp.yandex.ru
- SMTP Port — порт SMTP сервера. Вводим 465
- Encryption — тип шифровки писем. Вводим Use SSL encryption
- Authentication — авторизация. Выбираем Yes: Use SMTP authentication
- Username
— логин от почты. Значение должно совпадать с From Email
Настройка Contact Form 7
Допустим, мы зарегистрировали email и внесли его в настройки WP Mail SMTP , тогда его нужно прописать в форме Contact Form 7 в разделе Письмо в поле От кого :
Не обращайте внимания на ошибку: Электронный адрес отправителя не принадлежит домену сайта. , email будут отправляться верно с этого адреса.
Установка и настройка почтового сервера
Если лимиты внешнего SMTP-сервера не устраивают, можно использовать свой серверный вариант: установить Postifx или Sendmail. Оба отвечают за работу с email, в частности, их отправку и пересылку.
Установка происходит с помощью введения команд в . Инструменты: или putty. Если работа не под root , не забываем перед командами давать sudo
Установка Postfix
apt-get update && apt-get install postfixВ процессе установки будут заданы вопросы относительно настройки. Важно выбрать тип Internet Site . Это необходимо сделать для того, чтобы Postfix сгенерировал файл main.cf и сразу начал работу. В противном случае, Вам необходимо будет настраивать его вручную.
Установка Sendmail
Sendmail устанавливается примерно так же
Apt-get update && apt-get install sendmail
Потом его сконфигурировать
Sendmailconfig
После всего этого перезагрузить сервер
Что делать, если email не доходит
- Проверить правильность адреса, куда почта должна придти;
- Проверить папку Спам ;
- Выждать пару минут.
Если по истечению времени письмо таки не дошло в почтовый ящик, хотя плагин просигнализировал об успешной отправке сообщения, возможно, хостинг не настроен должным образом.
Возможно, php просто не может отправлять письма.
Отправка почты через SMTP с локального сервера позволяет протестировать отправку сообщений с сайта находящемся на локальной машине, или проще говоря, локальном сервере. Для этого можно использовать любой почтовый сервис yandex, google или mail.ru.
Прежде всего, SMTP (Simple Mail Transfer Protocol) - это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. И такими протоколами обладают все популярные почтовые сервисы.
С появлением локальных серверов, отпала необходимость выбора хостинг-провайдера для того чтобы проверить работоспособность отдельных скриптов или cms-систем, а тем более еще и платить за это. Гораздо проще все протестировать на компьютере, ну а затем можно и показать всем что «натворили».
Многие такие сервера имеют уже встроенное программное обеспечение и необходимый функционал по работе с почтой, нужно его только правильно настроить.
Для проверки работоспособности такой почты необходим самый минимум:
- В качестве локального сервера можно использовать Openserver.
- И простенький скрипт, шаблон которого можно взять чуть ниже.
- Почтовый сервер можно использовать любой.
Отправка почты php через SMTP-настройка скрипта
Шаблон простенького скрипта который можно скопировать чуть ниже, или скачать еще на сотнях подобных сайтов, необходимо отредактировать.
Для начала нужно поменять в шаблоне скрипта некоторые значения.
to
— меняем на почтовый адрес куда будет отправлено почтовое сообщение.
subject
— тема письма
message
— само сообщение, или тело письма.
Пример моего скрипта:
Можно конечно немного расширить функционал и сделать так, чтобы скрипт выдавал сообщение об отправки почты. Хоть на самом деле отправку производит именно SMTP-сервер, а скрипт лишь формирует сообщение.
Для примера можно написать так:
Все подставленные значения должны быть в кавычках, иначе скрипт выдаст ошибку. После этого можно сохранить скрипт в папку локального сервера.
Например: domains/send/index.php и приступать к настройке отправки почты через SMTP opensrerver.
Почта будет приходить на любой адрес, который будет указан в скрипте вместо значения ‘to’ , но обрабатывать и отправлять эту почту будет именно тот SMTP, который будет указан в настройках openserver.
- Запускаем сервер
- Открываем модуль openserver с настройками в меню «почта»
- Заполняем все поля как показано на картинке, при этом, имя пользователя, e-mail отправителя и пароль подставляем от реального почтового ящика на яндексе.
Сохраняем настройки и после того, как сервер будет перезапущен, можно обратиться к самому скрипту. Из папки «Мои сайты», открыть папку «send» в которой и находится сохраненный ранее скрипт index.php.
Как только произойдет обращение к данному скрипту, в новом окне браузера появится информация о том, что скрипт отработал.
После этого стоит проверить свой почтовый ящик, адрес которого был указан в скрипте, пришло ли письмо.
Если его нет, значит что-то настроено не правильно, либо письмо попало в папку спам.
Все остальные настройки выглядят аналогично, но на всякий случай дополнительная информация не помешает.
Для того, чтобы настроить отправку почты через SMTP mail ru, необходимо просто заменить параметры яндекса на параметры mail ru.
А чтобы не перестраивать каждый раз локальные сервер, лучше всего настроить разные профили openserver. Как это сделать показано в видеоуроке .
В этом случае достаточно будет просто загрузить профиль и все настройки, которые были указаны для данного профиля будут доступны после перезапуска сервера. Очень удобная штука и работает очень просто.
Для каждого профиля (совсем не важно как он будет называться), должны быть сделаны свои настройки, если конечно планируется использование разных по своим параметрам скриптов, cms-систем и приложений.
Если нет, то можно обойтись и настройками по умолчанию.
Что касается SMTP mail ru, то здесь все эдентично.
Меняются данные яндекса на данные mail ru
Oтправка почты через smtp google
Для того, чтобы настроить отправку почты через SMTP гугла, стоит чуть постараться.
Во-первых, создание самого профиля в гугле сложнее чем в других системах яндекса и mail ru
Во-вторых, система просто так не пропустит письмо, даже если указать свои данные для входа. Для начала она пришлет письмо в котором и будет вся необходимая информация о дальнейших инструкциях.
В остальном же для гугла настраивается точно так же. Меняются только все данные .
Для настройки отправки почты через другие SMTP, все данные будут примерно одинаковы.
Если у вас все получилось и письма дошли до указанного адресата, значит все сделано правильно. Будет здорово если вы поделитесь своими наработками в комментариях.
Чтобы отправлять почту с вашего VDS, необходимо указать доменное имя.
Если вы покупаете новый сервер - укажите правильный домен при заказе, и почта будет работать корректно.
Но лучше создать почтовый домен в ISPmanager . Панель позволяет гибко настроить почту: подключить защиту от спама, автоматическую настройку записей DKIM и DMARС, установить SSL-сертификат и т.д.
Если вы уже купили сервер и не указали домен - создайте его через ISPmanager и включите как адрес администратора для нужного www-домена.
Зачем указывать домен?
Если вы этого не сделаете, система составит имя почтового домена из адреса вашей электронной почты и нашего бесплатного технического домена fvds.ru. Тогда PTR-запись свяжет IP сервера с неправильным почтовым доменом - example.fvds.ru.
В этом случае отправленная с сервера почта не дойдёт до адресата. Почтовый сервис проверит соответствие IP и домена (чтобы понять, что вы не спамер, который шлёт письма от чужого имени). Увидит, что домен, с которого отправлено письмо и домен, закреплённый в ptr-записи, не совпадают. И скорее всего, отклонит письмо, как спам.