SMTP — simple mail transfer protocol — дословно переводится как «простой протокол передачи почты». Из названия понятно, что его используют для отправки электронной почты и доставки писем адресату.
SMTP-сервер — это сервер, который отвечает за корректную работу протокола. Его главная задача — быть ретранслятором между отправителем и получателем. Она заключается в выполнении каждой из двух ключевых функций:
На этом зона ответственности SMTP-сервера заканчивается, его функционал рассчитан только на отправку писем. За получение почты на стороне адресата отвечают протоколы POP3 и IMAP.
Примерный пошаговый алгоритм отправки письма выглядит так:
Если со стороны получателя нет ответа, сервер ещё несколько раз пытается установить соединение. В случае, если ответа всё ещё нет — возвращает код ошибки.
Стандартный порт для работы SMTP — 25. Но помимо него также используются 465 и 587 порты для защищённого SSL-соединения и обязательной аутентификации соответственно. Отдельно стоит отметить, что некоторые провайдеры блокируют 25 порт, чтобы предотвратить спам-рассылки, уточняйте этот вопрос индивидуально.
В качестве SMTP-сервера вы можете использовать облачные серверы практически в любой конфигурации. Однако если вы планируете запускать большие рассылки или вам критически важно, чтобы письма не были отмечены как спам, рекомендуем воспользоваться SMTP-сервером Google.
Cloud
Стоимость. Один из самых очевидных плюсов — использование Google SMTP абсолютно бесплатно, достаточно иметь аккаунт в системе.
Всё уже настроено. Администрирование сервера почты — довольно сложное занятие, которое потребует теоретических знаний сетевых протоколов, а также практического опыта настройки серверов. Используя стороннее решение, вы сэкономите на конфигурации сервера множество часов.
Резервное копирование. Кроме того, вы не несёте ответственность за бесперебойность работы сервера — если что-то «упадёт» среди ночи, этим займутся специалисты Google. Они также обязаны делать резервное копирование отправленной и полученной почты, освобождая вас от головной боли с сохранением ценной и конфиденциальной информации.
Индексация. Дополнительным плюсом хранения почты на серверах Google также является то, что индексация и поиск производятся с помощью вычислительных мощностей корпорации. При использовании одного и того же SMTP Gmail автоматически разместит письма в отправленных и полученных — вся почта будет отображаться в едином месте.
Спам. Борьба со спамом — одна из самых больших проблем при создании собственного почтового сервера. Используя собственный SMTP-сервер, вы должны следить за тем, чтобы ваши письма не попадали в спам. При отправке письма через SMTP-сервер Google вы можете быть уверены, что оно придёт получателю так же, как и обычное письмо с почты gmail. Поскольку Google не использует стандартный 25 порт для отправки писем, вероятность, что провайдер пометит письмо как спам или вовсе заблокирует, снижается.
Хранение на удалённом сервере. Один из самых распространённых страхов по поводу сторонних SMTP-серверов заключается в том, что вся ваша переписка находится под контролем Google. Однако конфиденциальность переписки и хранения почты на собственных серверах всё ещё под вопросом, если вы собираетесь общаться со среднестатистическими пользователями — ведь они вряд ли используют собственные SMTP-серверы.
Лимит. Google ограничивает количество писем в день до 100 штук. Этого вполне хватит, если вы тестируете механизм SMTP-отправок или ваш проект не рассчитан на большие объёмы исходящих писем.
Для настройки сервиса потребуется доступ к учётной записи экосистемы Google. В общем случае достаточно пары логин-пароль, но если у вас подключена двухфакторная аутентификация, что мы настоятельно рекомендуем сделать, вам нужно сгенерировать специальный пароль приложения на соответствующей странице.
Для работы почты вам понадобится следующий список настроек Google SMTP-сервера:
Обратите внимание, что Google будет автоматически перезаписывать заголовок From любого письма, которое вы отправляете через SMTP-сервер, если оно не совпадает с вашим адресом по умолчанию. Так, если вы при отправки указали несуществующий адрес электронной почты, Google заменит его на ваш. Такое поведение является стандартным, но вы можете регулировать его в настройках почты.
Кроме автоматизированной отправки писем с помощью SMTP-сервера Google вы также можете использовать данные для подключения к почтовым клиентам — например, Thunderbird или Outlook. Так вы сможете отправлять электронные письма не через браузер или стандартный клиент Google.
Но обратите внимание, чтобы получать почту с вашего Google-аккаунта в другом клиенте, вам нужно использовать POP3 или IMAP. Параметры протоколов находятся в там же, где и все настройки почты Gmail в разделе «Переадресация и POP/IMAP»
Для того, чтобы протестировать конфигурацию, которую мы привели для настройки, напишем простой PHP-скрипт. Почту будем отправлять с помощью пакета phpmailer, установим его через менеджер зависимостей Composer:
composer require phpmailer/phpmailer
Далее создадим файл index.php, в котором укажем настройки SMTP-сервера и попробуем отправить тестовое письмо.
<?php
error_reporting(E_ALL); # выводим ошибки
// Подключаем phpmail
require dirname(__FILE__) . '/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
// Указываем, что нужно использовать SMTP
$mail->isSMTP();
// В целях отладки включаем вывод результатов на страницу отправки
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
// Указываем доступы к SMTP
$mail->Host = 'smtp.gmail.com'; # хост
$mail->Port = 587; # порт
$mail->SMTPSecure = 'tls'; # шифрование
$mail->SMTPAuth = true; # авторизация
$mail->Username = "user@gmail.com"; # логин
$mail->Password = "62584jattjjtmxnpwf124"; # полученный пароль
// Получатели и отправители
$mail->setFrom('test-mail@timeweb.com', 'Тестовый отправитель Timeweb'); # от кого
$mail->addReplyTo('replyto@example.com', 'First Last'); # адрес для ответа
$mail->addAddress('mail@kulizh.ru', 'Nikita Kulizhnikov'); # кому
// Тема и содержание
$mail->Subject = 'Timweb: test SMTP Google'; # тема
$mail->msgHTML('<h1>Hello, Timeweb</h1>'); # содержание в формате HTML
$mail->AltBody = 'This is a plain-text message body'; # альтернативный текст, если не удастся использовать HTML
// Выводим результат
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
Вы можете использовать такой же скрипт, указав свои данные для подключения, а также получателей и обратный адрес Reply-To.
Теперь исполним PHP-скрипт через браузер, просто запустив страницу. Если всё указано верно, мы увидим подробный вывод результатов отправки письма.
Если какие-то доступы мы указаны неверно, PHPMailer отобразит сообщение об ошибке.
Откроем почтовый клиент, посмотрим, пришло ли письмо. Всё в порядке, видим, что письмо получено. Также мы увидим его в списке отправленной почты в клиенте Gmail.
Поднимите свой почтовый сервер в Timeweb Cloud
В этой статье мы рассмотрели преимущества использования SMTP-сервера Google. Среди них отсутствие расходов на настройку и обслуживание (услуга бесплатная), надёжное резервное копирование, а также гарантия непопадания в спам-листы.
Кроме того, в целях тестирования мы написали простой PHP-скрипт, на примере которого продемонстрировали работоспособность отправки.
В статье также упомянуты ограничения и минусы использования сторонних сервисов отправки почты. Если вы захотите настроить собственный сервер, воспользуйтесь облачными решениями Timeweb, наши специалисты помогут с выбором конфигурации, а также проконсультируют по поводу настройки PTR-записей.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.