Полезные... Интернет  Безопасность

Как настроить отправку писем по электронной почте от других адресов и имён? Отправка почты через SMTP с локального сервера

В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.

Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.
Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

На изучение этого вопроса я потратил немало времени, разобравшись в каждом заголовке. Начал с базовой настройки из пакетов, при этом из предоставляемых пакетов выбрал, то что понравилось, а закончил тонким феншуем, который я так до конца не воплотил, ибо это уже было совсем изыск.

Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов .

Подробности под катом

Преамбула

Кто-то пользуется либами, которые заменяют функцию mail (например phpmailer), они могут общаться с SMTP напрямую, а могут отправлять и на локальный сервер. Но лучше использовать стандартную встроенную и настроенную функцию PHP mail() которая будет отправлять почту на локальный сервер исходящей почты, который в свою очередь будет с ней сам разбираться. При использовании данной функции тормозов всегда наименьшее количество, так как локальный почтовый агент быстро принимает либо отклоняет почту, а если принимает, то доставляет самостоятельно.

Статья отформатирована не самым лучшим образом. Извиняюсь, время поджимает, а рассказать хочется пока вспомнил, а то потом не времени будет.

Чем проверять нашу работу?

Тестируем вот этим методом
$result = mail("[email protected]", "subject", "message"); if($result) { echo "все путем"; } else { echo "что-то не так"; }

Каких целей в заголовках нам требуется достичь?

- Вот этих заголовков от gmail.com
Прошу заметить, что это заголовки с которыми письмо попадает в ящик конечного пользователя
Delivered-To: [email protected] Received: by 10.182.0.137 with SMTP id 9cs9033obe; Sat, 21 Jan 2012 13:25:09 -0800 (PST) Received: by 10.205.119.199 with SMTP id fv7mr1052469bkc.113.1327181107295; Sat, 21 Jan 2012 13:25:07 -0800 (PST) Return-Path: Received: from wartur.ru (wartur.ru. ) by mx.google.com with ESMTP id ua10si4066845bkb.110.2012.01.21.13.25.06; Sat, 21 Jan 2012 13:25:07 -0800 (PST) Received-SPF: pass (google.com: domain of [email protected] designates 188.134.79.140 as permitted sender) client-ip=188.134.79.140; Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 188.134.79.140 as permitted sender) [email protected] Received: by wartur.ru (Postfix, from userid 1002) id 9913B61D; Sun, 22 Jan 2012 01:24:55 +0400 (MSK) To: [email protected] Subject: subject X-PHP-Originating-Script: 1002:index.php Message-Id: <[email protected]> Date: Sun, 22 Jan 2012 01:24:55 +0400 (MSK) From: [email protected]
- А так же этих заголовков от mail.ru
Return-path: Received-SPF: pass (mx64.mail.ru: domain of wartur.ru designates 188.134.79.140 as permitted sender) client-ip=188.134.79.140; [email protected]; helo=wartur.ru; Received: from (port=64667 helo=wartur.ru) by mx64.mail.ru with esmtp (envelope-from ) id 1RoiQJ-0005E9-6r for [email protected]; Sun, 22 Jan 2012 01:24:31 +0400 X-Mru-BL: 0:0:0:0 X-Mru-PTR: wartur.ru X-Mru-NR: 1 X-Mru-OF: Linux (ethernet/modem) X-Mru-RC: RU Received: by wartur.ru (Postfix, from userid 1002) id 460BC9B7; Sun, 22 Jan 2012 01:24:20 +0400 (MSK) To: [email protected] Subject: subject X-PHP-Originating-Script: 1002:index.php Message-Id: <[email protected]> Date: Sun, 22 Jan 2012 01:24:20 +0400 (MSK) From: [email protected] X-Spam: Not detected X-Mras: Ok X-Mru-Authenticated-Sender: uid:[email protected]

Когда вы только начнете, вы увидите, что таких красивых заголовков у вас нет. Принимающий сервер почты будет считать вас каким-то чучмеком, об этом и будет писать в заголовке письма с предупреждением, что вот еще чуть чуть и он тебя точно в блек-лист поставит. Вся информация в заголовке используются всеми цепочками серверов и принимающий агент для того что бы в зависимости от настроек спам фильтра отклонить письмо или принять. Самые драконовые методы это блек-листы, а мягкие определяют плохих по заголовкам и жалобам.

Так же замечаю, если установить в функции mail() 4-й параметр и поставить туда заголовок From то и заголовок From: [email protected] тоже изменится, а если не задавать, то оно будет автоматически определяться таким же как и заголовок Return-path: , что вы можете видеть у меня в заголовках.
Очень удобна такая схема: отправка идет через сервер с измененным заголовком From, а прием на gmail (через службы домена). Желательно, что бы почта тоже принадлежала к тому же домену, для которого настроен сервер, а так же выполнены некоторые пункты указанные ниже.

Приступим

- Совет
Господа, я люблю ставить все пакетами и новичкам не советую заниматься самодеятельностью, во многих пакетах уже есть скрипты автоматической настройки, результаты которых надо только чутка подправить и все будет хорошо. Кроме того, из репозиториев оно само обновляется и вообще меньше запары просто потому что её меньше.

- Настройка PHP
Ставим как хотим php, это вы как-нибудь без меня.

Идем в настройки php, заменяем эквивалентно:
sendmail_path = /usr/sbin/sendmail -t -i [email protected]

Этим мы указали заголовок Return-Path:

Кстати 1: это будет таковым для всех виртуальных доменов сервера, что бы это исправить и настроить под текущий, то требуется передать 5-й параметр в функцию mail().
$result = mail("[email protected]", "subject", "message", "From ...", "[email protected]");
Кстати 2: если вы поставите 5-й параметр на обычном виртуальном хостинге, то вам тоже рекомендуется проводить настройку вашего домена, как это описано ниже. Обращаю внимание, что операцию с PTR записями сделать невозможно, так как 1 IP = Домен, ну или по крайней мере не рекомендуется делать их 2, не помню уже.

- Настройка MTA , он же локальный сервер исходящей почты
Я вам искренне советую postfix, далее идем в настройки /etc/postfix/main.cf
для тех, кто уже нарвался на sendmail, и понял как они трудно выпиливаются из системы, советую команду:
aptitude purge sendmail

(k-wartur.wartur.ru - это мой сервер в домене wartur.ru)

Если я не ошибаюсь, это помогло. Когда агент доставки представляется другому серверу передается HELO. Поменяете myhostname, поменяется следующий заголовок:
Message-Id: <[email protected]>

Smtp_helo_name по дефолту это myhostname, читаем матчасть

Mydestination - если я не ошибаюсь, это задает те домены с которых MTA будет принимать почту на обработку, если у вас виртуальный хостинг (что я устроил на сервере дома), то без _ALL_ у вас будут проблемы с отправкой почты с других доменов кроме указанных.

Ну вот, видите, заголовки уже намного правильнее не так ли, а то ужас поначалу был.

- Разборки с почтовыми сервисами (почтовики)
А они нас считают как недобрый источник.
Наш сервер смог правильно helo представиться, но вот только почтовики нам все равно не доверяют.
Для этого были придуман алгоритм, для того что бы владелец домена с помощью DNS (если он конечно грамотный как мы) мог указывать, что вот таким-то серверам можно доверять, а другим нельзя.

У вас вместо ужаса который сейчас должно получиться вот это:
Received-SPF: pass (google.com: domain of [email protected] designates 188.134.79.140 as permitted sender) client-ip=188.134.79.140; Received-SPF: pass (mx64.mail.ru: domain of wartur.ru designates 188.134.79.140 as permitted sender) client-ip=188.134.79.140; [email protected]; helo=wartur.ru;

Мы уже на пути к истине. К слову, по умолчанию, почтовик все считает как v=spf1 ~all, что понижает уровень порога входа в блек лист, и а так же можно пользоваться вашим доменом для отправки спама, и вас сами того не знали пометят как плохиша на будущие времена.

Идем в ДНС и создаем TXT запись в вашем домене, в моем случае wartur.ru
v=spf1 +mx +a:wartur.ru +a:k-wartur.wartur.ru +include:gmail.com -all

V=spf1
это означает, что версия алгоритма spf1

Mx
Можно доверять почте если она отправлена с серверов mx, например если mx.wartur.ru это сервер приема, то если этот сервер будет отправлять, то все будет хорошо.

A:wartur.ru
Можно доверять серверу, обслуживающий домен wartur.ru

Так же добавлю, например на моем почтовом сервере разместился pupkin.ru.
Я дал Пупкину погонять мой почтовый сервер исходящей почты k-wartur.wartur.ru (обычная ситуация виртуального хостинга, он всегда стоит локально, как бд, и все все все). Тогда он у себя должен настроить +a:k-wartur.wartur.ru

Include:gmail.com
Импортируем все правила gmail.com, у них тоже есть такая запись TXT для своих серверов. (я использую сервисы google для домена)

All
Указываем, что админ считает другие места не своими, и это может быть ближайший бордель в подворотне рассылающий спам от моего имени
(+all а это означает, что весь мир мои друзья)

Матчасть для самообучения
http://ru.wikipedia.org/wiki/Sender_Policy_Framework

- Разборки с почтовыми сервисами, настройка обратной PTR
Почтовики еще спрашивают обратные доменные зоны PTR для дополнительной галочки, думаю эта галочка одна из самых жирных , так как она 100% определяет сервер, и если он ведет себя правильно, то ему очень сильно доверяют и любое письмо наверняка дойдет до адресата.
X-Mru-PTR: wartur.ru, он же есть в google наврное это Received: from wartur.ru (wartur.ru. )

Заметка:
В виртуальном хостинге вам это сделать не дадут, у них на этот адрес замапин свой сервер, какой-нибудь servername.badhosting.ru, на котором вы и размещаетесь, да и вообще только на собственном серваке с собственным IP это возможно провернуть.

Интересно: Если вы живете дома, а у меня один из серверов стоит дома, в частности wartur.ru. Что делать? вроде IP выделенный, а обратный адрес, не настроить. Я позвонил выше (к провайдеру) сказал мол так и так хочу PTR зону. Мне её сделали, очень доволен.

Еще немного слов о заголовках (все вперемешку)

X-Mru-BL: 0:0:0:0 упаси вас иметь что-нибудь кроме нолей, это блеклисты.
X-Mru-OF: интерфейс с которого посылается, я так и не понял от чего это зависит.
X-PHP-Originating-Script: - я бы советовал добавлять, хотя если вы очень печетесь о безопасности и неразглашении, то можно и запретить. Делается это неподалеку от той настройки PHP которой мы делали. По умолчанию включено.

Еще можно и интересно посмотреть что пишет Яндекс при приеме, очень интересно.

Дополнительно

Там еще какие-то цифровые подписи есть.
определяется заголовком, DKIM-Signature
С виду у меня уже было все в порядке, а этот заголовок не очень нужен. Он нужен обычно сервисом очень крупного масштаба вроде facebook или google где рассылка уведомлений и почты идет в гигатонном масштабе. Если ваш сервис не обладает миллионами пользователей, то не думайте об этом, хотя если вы изыскатель - напишите как об этом здесь и мы свяжем статьи - что бы все казалось полностью законченным, только я прошу намного проще написать, так как уже где-то видел статьи про это все. От себя добавлю что мне было лень устанавливать еще один пакет, разбираться и еще что-нить.

Материала к сожалению нет, так как по крупицам отовсюду собирал 4 месяца назад, потом меня не было времени, а теперь я написал по памяти.

Удачной грамотной настройки вашего сервера. Я попробовал объяснить хотя бы один из нескольких аспектов настройки.

UPD:
Найден интересный пруф

На серверах виртуального хостинга разрешена отправка почты с сайта только при помощи функции PHP mail().

Email, с которого будет происходить отправка писем с сайта, прописывается в панели управления хостингом ISPmanager.

Этот же email необходимо будет прописать в настройках сайта. Совпадение email - обязательное условие корректной работы функции PHP Mail.

Указание ящиков вида: @gmail.com, @yandex.ru и др. приведет к попаданию писем в спам!

Для настройки необходимо зайти в ISP manager >> раздел "World Wide Web" >> "WWW домены"

Выбрать домен и в поле "E-Mail администратора" указать электронный ящик от которого планируется отправлять сообщения.

Для проверки работы php mail() на сервере, в корневой папке сайта необходимо создать файл testmail.php cо следующим содержимым:

// Сообщение

$message = "test php mail";

// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap()

$message = wordwrap($message, 70);

// Отправляем

mail("[email protected]", "My Subject", $message);

?>

где [email protected] email, на который должно прийти сообщение.

Для проверки нужно исполнить скрипт, сделать это можно через браузер, открыв следующую ссылку:

http://domian.com/testmail.php

где domain.com название сайта, в корне которого был создан скрипт testmail.php.

Если сообщение «test php mail» пришло на указанный email, то функция php mail работает корректно.

Пример взят из официальной документации по PHP mail http://php.net/manual/ru/function.mail.php

Отправка почты с CMS Drupal 7.

По умолчанию все сообщения с Drupal7 отправляются по средствам php mail(), email отправителя указывается при установке Drupal7.

Необходимо, чтобы email отправителя в Drupal совпадал с "e-mail Администратора" в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно будет изменить в административной части Drupal, в разделе: Administration » Configuration » System

Если отправка сообщений с сайта не работает, необходимо проверить, возможно включен модуль для работы почты посредством smtp. Для проверки зайдите в раздел модулей, в административной части сайта Drupal: Administration » Modules

Отключите модуль SMTP, убрав «галочку» возле модуля и сохранив настройку «Save configuration».

Возможно, что отправка сообщений посредством SMTP реализована и другим способом. Для отправки сообщений через SMTP необходимо, чтобы на сайте присутствовал PHPMailer. Файлы PHPMailer по умолчанию находятся в директории./sites/all/modules/smtp/phpmailer.

Существуют еще несколько способов реализации отправки сообщений сайта через php mail и SMTP. С ними вы можете ознакомиться в документации к CMS

Все сообщения с сайтов на Drupal отправляются посредством внутреней функции Druapl drupal_mail(). Через данную функцию реализовано большинство модулей для отправки. Настройки находятся в файле./includes/mail.inc

В частности за отправку сообщений отвечают следующие строки:

drupal_mail($module, $key, $to, $language, $params = array(), $from = NULL, $send = TRUE)

Отправка почты с CMS Joomla 3

По умолчанию все сообщения с Joomla отправляются с помощью php mail(), email отправителя указывается при установке Joomla.

Необходимо, чтобы email отправителя в Joomla совпадал с "e-mail Администратора" в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно изменить в административной части Jommla в разделе: System » Global Configuration » Server Settings » Mail Settings

В поле «Mailler» нужно выбрать «PHP Mail» или «Sendmail», а так же в поле «SMTP Authentication» выбрать «No».

В Joomla настройки для отправки почты могут быть прописаны в конфигурационном файле configuration.php , который расположен в корневой директории сайта.

В configuration.php присутствуют следующие строки:

public $mailer = "mail";

public $mailfrom = "admin yourdomain.com";

public $fromname = "J25 Демо";

public $sendmail = "/usr/sbin/sendmail";

public $smtpauth = "0";

public $smtpuser = "";

public $smtppass = "";

public $smtphost = "localhost";

public $smtpsecure = "none";

public $smtpport = "25";

$mailer: "mail" использует функцию mail PHP; "sendmail" использует SMTP почту на сервере.

$mailfrom: адрес From. Адрес электронной почты, который использует Joomla для отправки почты с сайта.

$sendmail: путь, по которому распложена программа Sendmail. Используется, если $mailer установлено в Sendmail.

$smtpauth: если SMTP сервер требует аутентификацию для отправки почты, то устанавливается в "1". Иначе "0". Используется, если $mailer установлено в Sendmail.

$smtpuser: имя пользователя для доступа к SMTP серверу. Используется, если $mailer установлено в Sendmail.

$smtppass: пароль для доступа к SMTP серверу. Используется, если $mailer установлено в Sendmail.

$smtphost: SMTP хост. Адрес SMTP сервера при отправке почты. Используется, если $mailer установлено в Sendmail.

$smtpsecure: выберите модель безопасности, которую использует ваш SMTP сервер: SSL или TLS. По умолчанию выключено. Используется, если $mailer установлено в Sendmail.

$smtpport: SMTP порт. Наименее защищенные серверы используют порт 25.

В Joomla много модулей, каждый из которых может использовать собственную систему отправки почты с сайта, не зависящую от глобальных настроек самой CMS Joomla. В связи с этим возможна ситуация, когда глобально настроена отправка через php mail, а в конкретном модуле, который, к примеру, отвечает за «Обратную связь», через SMTP.

Отправка почты с CMS WordPress 4

По умолчанию все сообщения с WordPress отправляются при помощи php mail(), email отправителя указывается при установке WordPress.

Необходимо, чтобы email отправителя в WordPress совпадал с "e-mail Администратора" в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно изменить в административной части WordPress в разделе: Settings » General

Если сообщения с сайта не отправляются, нужно проверить есть ли плагин по отправке писем через SMTP, если есть то отключить.

Зайдите в раздел: Plugins » Installed Plufins

Если присутствует плагин по отправке через SMTP, то его нужно отключить.

Иногда может возникнуть ошибка:

«Сообщение не удалось отправить. Возможная причина: сервер не поддерживает функцию mail()...»

Для ее решения нужно отредактировать файл на сайте:

./wp-includes/pluggable.php

Найти в этом файле строчки:

// Set to use PHP"s mail()

$phpmailer->IsMail();

И заменить на:

// Set to use PHP"s mail()

$phpmailer->IsSendmail();

Различные модули WordPress могут использовать для отправки писем как php mail(), так и SMTP вне зависимости от глобальных настроек. В связи с этим возможна ситуация, когда глобально настроена отправка через php mail, а в модуле который, к примеру, отвечает за «Обратную связь», через SMTP.

Обращаем ваше внимание, что за инфомацией по дополнительным настройкам указанных и других CMS необходимо обращаться к документации CMS.

Отправка почты через 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.

  1. Запускаем сервер
  2. Открываем модуль openserver с настройками в меню «почта»
  3. Заполняем все поля как показано на картинке, при этом, имя пользователя, e-mail отправителя и пароль подставляем от реального почтового ящика на яндексе.

Сохраняем настройки и после того, как сервер будет перезапущен, можно обратиться к самому скрипту. Из папки «Мои сайты», открыть папку «send» в которой и находится сохраненный ранее скрипт index.php.

Как только произойдет обращение к данному скрипту, в новом окне браузера появится информация о том, что скрипт отработал.

После этого стоит проверить свой почтовый ящик, адрес которого был указан в скрипте, пришло ли письмо.

Если его нет, значит что-то настроено не правильно, либо письмо попало в папку спам.

Все остальные настройки выглядят аналогично, но на всякий случай дополнительная информация не помешает.

Для того, чтобы настроить отправку почты через SMTP mail ru, необходимо просто заменить параметры яндекса на параметры mail ru.

А чтобы не перестраивать каждый раз локальные сервер, лучше всего настроить разные профили openserver. Как это сделать показано в видеоуроке .

В этом случае достаточно будет просто загрузить профиль и все настройки, которые были указаны для данного профиля будут доступны после перезапуска сервера. Очень удобная штука и работает очень просто.

Для каждого профиля (совсем не важно как он будет называться), должны быть сделаны свои настройки, если конечно планируется использование разных по своим параметрам скриптов, cms-систем и приложений.
Если нет, то можно обойтись и настройками по умолчанию.

Что касается SMTP mail ru, то здесь все эдентично.

Меняются данные яндекса на данные mail ru

Oтправка почты через smtp google

Для того, чтобы настроить отправку почты через SMTP гугла, стоит чуть постараться.

Во-первых, создание самого профиля в гугле сложнее чем в других системах яндекса и mail ru
Во-вторых, система просто так не пропустит письмо, даже если указать свои данные для входа. Для начала она пришлет письмо в котором и будет вся необходимая информация о дальнейших инструкциях.

В остальном же для гугла настраивается точно так же. Меняются только все данные .

Для настройки отправки почты через другие SMTP, все данные будут примерно одинаковы.

Если у вас все получилось и письма дошли до указанного адресата, значит все сделано правильно. Будет здорово если вы поделитесь своими наработками в комментариях.

Кликните «Настройки» на панели инструментов, или выберите пункт меню «Настройки»/ «Общие настройки» , и измените параметры настройки непосредственно используемой программы. При этом должно открыться новое окно. Все настройки сгруппированы в пять основных категорий:


Настройки отправки сообщений

Здесь можно изменить основные параметры настройки программы ePochta Mailer.

Поле Описание
Тайм-аут отправки Определяет, как долго ePochta Mailer должен ждать ответа сервера. Рекомендуемое время - 60 секунд.
Число повторов Устанавливает, сколько раз ePochta Mailer должен пытаться установить подключение к серверу. Когда не удается установить связь с нужным сервером с первого раза, программа повторяет попытку соединения. Рекомендуемое значение - 3 попытки.
Интервал повтора Пауза между попытками отослать e-mail , когда не удается установить связь с нужным сервером.
Значение HELO HELO адрес - это адрес вашего компьютера в сети Интернет. Программа определяет его автоматически. Значение HELO должно совпадать с тем, что определяется тут .
Поле «КОМУ» Способ, с помощью которого ePochta Mailer создает имя пользователя (т. е. заполнение поля «Кому»).
Если отмечено «Автогенерация» , ePochta Mailer создаст имя на основе электронного адреса. Например, если электронный адрес bill@hotmail.com, имя пользователя, которое создаст программа, будет «Bill» .
Если отмечен параметр «Загрузить из списка» , ePochta Mailer загрузит информацию об имени пользователя из второй колонки базы «Списка получателей».
Кодовая страница Вам понадобится изменить данное значение на utf-8, если вы употребляете в письме английский язык.
Ограничения на домен Сколько слать писем на все домены из списка за определенное время. Требуется для очень больших списков чтобы не попасть в спам листы. На некоторых почтовых серверах задается ограничение - максимально возможное количество сообщений, принимаемых в течение часа с одного IP-адреса. К примеру, aol.com может принять с одного IP-адреса только 100 писем в час. Настройка позволяет указать, сколько можно послать сообщений за промежуток времени. При отправке сообщений ведется статистика по доменам, сколько было отправлено сообщений за интервал времени (для однопоточной рассылки). Для многопоточной рассылки статистика заполняется перед отправкой письма. Если писем на домен больше, чем разрешено настройками, то письмо ставится в очередь ожидания


Настройка SMTP

Вы можете задать определенный тип отправки сообщения. ePochta Mailer поддерживает следующие типы отправки:

Напрямую

В данном режиме ePochta Mailer доставляет все сообщения непосредственно в ящики получателей. Данный способ является самым быстрым, но необходимо помнить, что некоторые интернет-провайдеры запрещают прямой доступ (т. е. SMTP порт #25 закрыт).


Количество подключений для одного SMTP сервера.

  • «Ждать секунд/минут после писем» - установка паузы в процессе рассыли путем введения времени перерыва после заданого количества отправленных писем.
  • «Лимит сообщений/час» - установка количества отправленных сообщений за час рассылки.

Напрямую. При ошибке через SMTP

ePochta Mailer пытается осуществить прямую отправку сообщения; но, если возникнут серьезные ошибки, программа осуществит отправку сообщений через указанный SMTP сервер. Установить нужный SMTP сервер можно в дополнительной нижней вкладке «Список релеев (SMTP)». Для того, чтобы изменить параметры уже указанного в списке SMTP-аккаунта, следует дважды кликнуть по нему левой кнопкой мыши или кликнуть по кнопке «+» в правом верхнем углу окна списка SMTP-аккаунтов.

«Лимит скорости» - устанавливается возможное количество отправленных сообщений за час. При увеличении значения лимита возрастает скорость отправки. Значение прямо пропорционально зависит от количества выбранных SMTP серверов.

«Потоков» - устанавливается количество потоков (соединений) для каждого SMTP сервера, количество потоков зависит от количества выбранных SMTP и суммируется автоматически.

«Многопоточная рассылка» - для каждого релея пользователем задается количество соединений (потоков). При старте, если не стоит галочка на «Использовать ротацию SMTP», суммарное количество потоков рассылки = сумме потоков всех активных SMTP.

«Использовать ротацию SMTP» - задает количество сообщений, которое высылает релей во время активности
Ротация SMTP серверов - это настройка ePochta Mailer для поступательной рассылки сообщений через несколько SMTP серверов. Пошагово схему работы программы можно описать следующим образом: этап 1 . Использование всех SMTP серверов приостанавливается.
этап 2. Следующий в списке SMTP сервер выбирается.
этап 3. Происходит отправка заданного в настройках ротации количества писем через выбранный SMTP-сервер (с учетом ограничений, заданных для SMTP сервера)
этап 4. Как только активный SMTP высылается определенное количество сообщений (которое равно числу сообщений за ротацию), выполняется переход на следующий SMTP сервер. Заново и поочередно выполняются этапы 1–4.

Например, если выставлены настройки:
smtp.example.com - 4 потока,
smtp.examplesite.com - 5 потоков,
Стоит галочка на «Использовать ротацию смтп» 2 сообщ/сервер.
То рассылка будет производится в 2 потока.


Напрямую. SMTP по запросу

ePochta Mailer осуществляет прямую отсылку всех сообщений, за исключением отмеченных в списке в дополнительной нижней вкладке "Список доменов". При помощи этого списка, вы можете указать маски сообщений, которые необходимо отправить с помощью SMTP. Например, при вводе aol.com и wanadoo.fr все сообщения на данные адреса будут отправлены с помощью другого выбранного SMTP сервера.

«SMTP только для» - ввод списка доменов (например, gmail.com) для доставки сообщений через внешний SMTP. Для всех адресов с другими доменами будет использоваться отправка «Напрямую».


Только через внешний SMTP

Все сообщения отправляются с помощью указанного внешнего SMTP сервера. Возможно использование нескольких SMTP серверов, в этом случае ePochta Mailer будет использовать разные сервера для доставки сообщения (по очереди).

Осуществляя проверку, ePochta Mailer отправляет через каждый сервер из списка письмо на указанный пользователем адрес (процесс схожий с тестовой отправкой сообщений). Таким образом, определяются доступные и недоступные SMTP аккаунты. После проверки доступные аккаунты в списке релеев подсвечиваются зеленым, недоступные - красным, непроверенные - черным. В рамках управления недоступными аккаунтами, программа предлагает варианты действий для пользователя: удалить, отключить, пропустить.

Для того, чтобы изменить параметры уже указанного в списке SMTP-аккаунта, следует дважды кликнуть по нему левой кнопкой мыши или кликнуть по кнопке «+» в правом верхнем углу окна списка SMTP-аккаунтов.

Многие SMTP серверы требуют аутентификации. ePochta Mailer поддерживает ESMTP (самая распространенная), CRAM MD5, DIGEST MD5 (с безопасной передачей пароля), а также POP3 аутентификацию (морально устаревшую). В случае, когда требуется аутентификация, введите имя пользователя и пароль (а также имя POP3 сервера для POP аутентификации).

Нужно ознакомиться с он-лайн документацией вашего провайдера или связаться с провайдером SMTP сервера и, узнав у них все настройки, ввести их в соответствующие поля:

«SMTP-сервер» - адрес cервера и порт

«Логин» и «Пароль» - поля заполняются, если требуется авторизация пользователя. В поле «Логин» можно использовать е-mail адрес.

«POP сервер» - заполняется, если в авторизации выбрано «POP before SMTP (устаревш.)». Ввод имени и порта протокола, если отправка будет происходить на сервера устаревших почтовых клиентов.

«Е-mail адрес отправителя» - электронный адрес почты, с которого можно вести рассылку через данный сервер - часто это тот же адрес, что и логин.

«Подключений к серверу (потоков)» - количество подключений для одного SMTP сервера (можно указать 1 поток, но некоторые серверы поддерживают и многопоточное соединения).

  • Ждать от до секунд/минут после писем - установка случайного времени ожидания после заданого количества писем.
  • Лимит сообщений/час - скорость рассылки: установка количества отправленных сообщений за час рассылки.

Настройка DNS

DNS определяет IP-адреса, то есть преобразовывает символьные имена в IP-адреса.

Также, DNS определяет серверы, на которые необходимо отправить сообщения. Обычно ePochta Mailer автоматически определяет DNS серверы. В случае, если вы хотите использовать другой DNS сервер, или же ePochta Mailer не смог определить его автоматически, выберите «Использовать особые значения» и укажите какие.


Настройка Proxy

Использовать прокси

ePochta Mailer может осуществлять отправку сообщений с помощью socks/ proxy-серверов. Программа поддерживает следующие типы proxy-серверов:

  • Socks 4
  • Socks 4A
  • Socks 5

Для ввода необходимого proxy-сервера, нажмите "+" в верхнем правом углу. Появится диалоговое окно редактирования:

Выберите тип proxy-сервера из списка и введите адрес и порт выбранного сервера. Если для данного сервера необходима аутентификация, введите имя пользователя и пароль. В ином случае, оставьте данные поля незаполненными. Возможно использование более одного сервера, в этом случае ePochta Mailer будет для каждого нового адреса для рассылки использовать разные proxy- сервера.

Ротация прокси

Это настройка подразумевает под собой поступательную рассылку сообщений через несколько SMTP серверов.

Число сообщений за ротацию «[_] сооб./прокси» - количество отправленных сообщений через один SMTP сервер. Как только установленная порция сообщений через активный SMTP сервер отправленна, выбирается следующий SMTP сервер для отправки очередной порции сообщений.

Таймаут (мс) [_] - время ожидания между запросами через proxy-сервер.

Повторить через (с) [_] - время ожидания перед повторным запросом через proxy-сервер.

Напрямую, если мертвы - отправка сообщений напрямую, если ни один proxy-сервер не отвечает.

Число попыток [_] - количество попыток отправки запросов через один proxy-сервер.

Программа предоставляет возможность проверить все proxy-сервера. Proxy Checker определяет, рабочие или нерабочие указанные прокси-сервера. А также их тип, имя сервера и скорость соединения через прокси.

Заголовки

В этот раздел при потребности можно вводить дополнительные заголовки (необязательные и не стандартизированные).

Прочее

«Вести журнал работы» - создание log’ов для исходящих подключений (create logs for outgoing connections). Рекомендуется, чтобы данная опция была включена, т. к. в случае возникновения проблемы с отправкой сообщений, мы попросим вас выслать данные log’и для установки и устранения причины неисправности.

«Создавать отчёт о доставке» - после расылки будет создан HTML файл, в который будет включена сводная информация о сделанной рассылке. Эти отчёты далее всегда доступны в меню «Сервис» / «Открыть отчёты».

«Воспроизвести звук по окончании отправки» - после отправки сообщения ePochta Mailer будет воспроизводить заданный звуковой файл.

«Особый путь к сриптам для отслеживания» - не рекомендуется ничего сюда вводить, кроме случаев, если Вы используете собственные скрипты для мониторинга состояния рассылок ().

«Автоматически определять наличие обновлений» - автоматическая проверка программой наличия обновлений с запросом обновить программу на более новую версию.

«Не показывать панель «Посоветуйте друзьям» - если опция не активна, то данная панель будет представлена в окне программы. Возможность «посоветовать друзьям» осуществляется путем опубликования информации в Facebook, Twitter или других социальных сетях и интернт-мессенджерах.

Если вы на своём сайте активно используете 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 оговорки

  1. Ваш хостинг-провайдер должен разрешать исходящие соединения, чтобы была возможность подключиться к внешнему SMTP серверу
  2. Объём рассылки не превышает 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 не доходит

    1. Проверить правильность адреса, куда почта должна придти;
    2. Проверить папку Спам ;
    3. Выждать пару минут.

    Если по истечению времени письмо таки не дошло в почтовый ящик, хотя плагин просигнализировал об успешной отправке сообщения, возможно, хостинг не настроен должным образом.
    Возможно, php просто не может отправлять письма.