Как настроить отправку писем по электронной почте от других адресов и имён? Как настроить отправку писем с помощью языка R.

Рассказываем про ещё один полезный инструмент на роутерах 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=”[email protected]

Теперь добавим новый скрипт, который будет делать бэкап конфигурации роутера:

/export file=export /tool e-mail send to="[email protected]"subject="$ export" \ body="$ configuration file" file=export.rsc

Добавим скрипт на выгрузку конфигурации в планировщик:

/system scheduler add on-event="export-send" start-time=00:00:00 interval=24

Готово, теперь каждый день нам на почту [email protected] будет приходить свежая выгрузка резервной копии конфигурации нашего роутера.

Для того, чтобы настроить отправку писем на почтовый ящик, требующий TLS шифрования (как например Google mail), нужно настроить следующие параметры отправителя:

/tool e-mail set address= 192.168.1.34 set port=587 set [email protected] set user= mikrotik set password= supersecurepass

При отправке письма на такой ящик, необходимо указать параметр start-tls.

Send [email protected] subject="HW!" body="Hello World!" start-tls=yes

Если Вы предпочитаете настраивать роутер с помощью интерфейса WinBox, то откройте Tools Email и настройте параметры сервера:



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


Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

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

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

Но лучше создать почтовый домен в ISPmanager . Панель позволяет гибко настроить почту: подключить защиту от спама, автоматическую настройку записей DKIM и DMARС, установить SSL-сертификат и т.д.

Если вы уже купили сервер и не указали домен - создайте его через ISPmanager и включите как адрес администратора для нужного www-домена.

Зачем указывать домен?

Если вы этого не сделаете, система составит имя почтового домена из адреса вашей электронной почты и нашего бесплатного технического домена fvds.ru. Тогда PTR-запись свяжет IP сервера с неправильным почтовым доменом - example.fvds.ru.

В этом случае отправленная с сервера почта не дойдёт до адресата. Почтовый сервис проверит соответствие IP и домена (чтобы понять, что вы не спамер, который шлёт письма от чужого имени). Увидит, что домен, с которого отправлено письмо и домен, закреплённый в ptr-записи, не совпадают. И скорее всего, отклонит письмо, как спам.

Отправка почты через 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, все данные будут примерно одинаковы.

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

В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию 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:
Найден интересный пруф

 

Возможно, будет полезно почитать: