Вы можете установить SMTP сервер с помощью встроенных средств во всех версиях Windows Server. Такой SMTP сервер внутри организации может работать в качестве почтового релея, который должен принимать и пересылать через себя SMTP сообщения от различных устройств (к примеру, сендеров, сканеров, устройств СКД и пр.) и приложений (веб приложения, SQL Reporting Services, SharePoint), которым необходимо иметь возможность отправлять почту через SMTP сервер. Такой релей может пересылать сообщения на полноценные Exchange сервер или на публичные почтовые сервисы в Интернет типа Gmail, Mail.ru, Office 365 и т.д (ведь не всегда целесообразно разворачивать полноценную внутреннюю почтовую инфраструктуру на базе Microsoft Exchange Server или других почтовых служб).
В этой статье мы покажем, как установить, настроить и протестировать работу SMTP сервера на Windows Server 2012 R2, 2016 и 2019, который будет функционировать в качестве mail релея. Такой SMTP сервер не хранит почтовые сообщения и на нем отсутствуют почтовые ящики, он сможет только отправлять или пересылать почту.
Установка службы SMTP на Windows Server 2016/2012 R2
SMTP сервер – это один из компонентов Windows Server, который можно установить через Server Manager. Для этого откройте консоль Server Manager Dashboard (servermanager.exe), перейдите в режим Add roles and features и на этапе выбора функций отметьте чекбокс у пункта SMTP Server. Для управления службой SMTP нужно установить консоли управления, которые входят в комплект роли Web Server IIS (вам будет предложено установить IIS Management Tools).
Оставьте все предлагаемые опции роли Web Server (IIS) и запустите установку.
Также вы можете установить компонент SMTP сервера с помощью одной команды PowerShell:
Install-WindowsFeature smtp-server
После окончания установки компонентов может потребоваться перезагрузка системы.
Настройка SMTP сервера на Windows Server
Управляется SMTP сервер консоль управления Internet Information Services (IIS) Manager 6. Открыть эту консоль можно через Server Manager: Tools-> Internet Information Services (IIS) 6.0 Manager или командой inetmgr6.exe.
В консоли IIS 6 Manager разверните ветку с именем сервера, щёлкните ПКМ по SMTP Virtual Server и откройте его свойства.
На вкладке General, если необходимо, выберите IP адрес, на котором должен отвечать SMTP сервер (если у сервера несколько IP адресов), и включите ведение логов Enable logging (чтобы сохранялась информация обо всех полученных письмах).
Затем перейдите на вкладку Access.
Здесь нажмите на кнопку Authentication и убедитесь, что разрешен анонимный доступ (Anonymous access).
Вернитесь на вкладку Access и нажмите кнопку Connection. Здесь вы можете указать IP адреса устройств, которым разрешено отправлять почту через наш SMTP релей. Нужно выбрать опцию Only the list below и указать список IP адресов, не забыв самого себя (127.0.0.1).
Аналогичным образом настройте список разрешенных IP в настройках Relay (нажмите соответствующую кнопку). В этой секции указано каким IP адресам (или подсетям) можно пересылать почту через ваш SMTP сервер.
Перейдите на вкладку Messages. Здесь указывается email, на который будут отправляться копии всех NDR отчетов (Send copy of Non-Delivery Report to:). Также здесь можно указать ограничения на максимальный размер писем (Limit message size KB) и количество получателей (Limit number of recepients per message).
Перейдите на вкладку Delivery:
Затем нажмите на кнопку Outbound Security. Здесь указывается, как нужно авторизоваться на почтовом сервере, на который ваш SMTP-сервере будет пересылать (relay) всю почту. К примеру, если вся почта будет отправляться на почтовый сервер Gmail и уже с него пересылаться адресатам, вам нужно выбрать тип аутентификации Basic authentication, указав в качестве пользователя и пароля данные для доступа к почтовому ящику на сервисе Gmail (в настройках аккаунта Google нужно разрешить отправку через smtp сервера gmail).
Затем нажмите на кнопку Advanced.
Здесь указывается FQDN имя вашего SMTP сервера. Нажмите кнопку Check DNS, чтобы проверить корректность записи в DNS.
Если сервер должен пересылать почту внешнему smtp серверу, нужно указать его имя в поле Smart host (к примеру smtp.gmail.com или smtp.office365.com).
Сохраните настройки SMTP сервера и перезапустите ваш виртуальный SMTP сервер для применения изменений.
- Настройки DNS критичны с точки зрения работоспособности почтовой системы. Если ваш SMTP сервер не может корректно разрешить DNS имена доменов, на которые он пытается отправить письма, доставка не удастся.
- Если ваш сервер сам будет отправлять почту в другие домены, важно, чтобы для вашего адреса была сформирована правильная PTR запись для разрешения обратных DNS запросов. PTR запись для белого IP адреса должна указывать на FQDN имя. В противном случае большинство внешних smtp серверов не будут принимать от вас почту, считая ваш сервер спамерским.
Автозапуск службы SMTPSVC
Осталось настроить автозапуск службы SMTP сервера. Быстрее всего это сделать из командной строки PowerShell:
set-service smtpsvc -StartupType Automatic
Запустим службу:
start-service smtpsvc
Проверим, что запущена служба SMTPSVC :
get-service smtpsvc
—— —- ————
Running smtpsvc Simple Mail Transfer Protocol (SMTP)
Проверка работы SMTP сервера на Windows Server
Ну и последнее, что осталось сделать, проверить работу созданного SMTP сервера. Проще всего это сделать, создав на рабочем столе текстовый файл smtp-test-email.txt и скопировав в него следующий текст, заменив имя отправителя и получателя на ваши.
From: [email protected]
To: [email protected]
Subject: Email test
This is the test email
Скопируйте файл smtp-test-email.txt в каталог C:\inetpub\mailroot\Pickup. SMTP сервер следит за появлением файлов в этой каталоге и при обнаружении файла прочтет его содержимое и попытается отправить письмо с данной темой и текстом адресату, указанному в разделе To:.
Проверьте ящик получателя, в него должно прийти такое письмо.
Send-MailMessage -SMTPServer localhost -To [email protected] -From [email protected] -Subject "Email test" -Body "This is the test email sent via PowerShell"
Если вы хотите, чтобы вы включили Basic Authentication (Обычная проверка подлинности) для авторизации всех ваших SMTP клиентов (вместо анонимной аутентификации), вы можете отправить письмо с smtp-аутентификацией через telnet следующим образом.
Также убедитесь, что на вашем SMTP сервере не блокируется порт TCP 25 при удаленном подключении (локальным файерволом, антивирусом или межсетевым экраном). Проще всего это сделать с компьютера Windows, IP адрес которого добавлен в разрешенные. Проверку доступности порта можно выполнить с помощью командлета Test-NetConnection:
Test-NetConnection smtpsrv1.name.local –port 25
Если 25 порт блокируется, проверьте настройки Windows Firewall, антивируса и аппаратных межсетевых экранов.
Итак, вы настроили собственный почтовый SMTP релей на Windows Server 2016/2012 R2 и протестировали отправку писем через него.
Со времён 2003 сервера ничего не изменилось ))
Угу, лентяи из MS даже консоль не смогли обновить, до сих пор тянут оснастку от IIS 6
вопрос кто нибудь пытался сделать пересылку на современный mail.ru c использованием ssl?
Именно в такой конфигурации не пытался.
Но для нормальной отправки на mail.ru с Linux был опыт настройки SPF/DKIM записей для внешнего домена. Думаю здесь тоже самое.
как/где в настройках указать порт для smtp.gmail.com ??
все нашлось )
Здравствуйте. С удовольствием ознакомился с данной инструкцией и даже попытался выполнить настройки. Но столкнулся с проблемой следующего плана — сервер не делает пересылку на внешний smtp.
В качестве внешнего smtp использую timeweb.ru, данные по нему прописал, порт 465 открыл, галки для tls включил, имя пользователя с паролем прописал. Но отправляю тестовое письмо — он в папку queue падает и все. На почту ничего не приходит.
Проверьте, удается ли подключится с вашего сервера к SMTP серверу timeweb через командную строку?
Например так: https://winitpro.ru/index.php/2017/08/11/otpravka-pisma-iz-telnet-s-smtp-avtorizaciej/ (только у вас порт 465)
Пообщайтесь с хостером нет ли у них огрнаичений на релей?
Также по-хорошему нужно запросить логи у хостера (может там что-то в ошибках будет содержаться полезное).
Скажите пожалуйста, в офисе порядка 20 машина подключены к яндекс почте на всех пк установлен клиент аутлук по smtp\imap , канал 30 мбит на интернет, я стал иcпытывать проблемы с получением почты выраженные в том что она задерживается на 5-15 минen, и часто отправляется с 2-3 попытки.
Данные действия помогу разгрузить почту?
Мне кажется у вас проблемы с каналом в интернет (перегружен, плохая связь, дропы и т.д.). Установка собственного SMTP сервера от этого не спасет.
Или вы хотите организовать бесперебойное хождение почты между пользователями в локальной сети? В этом случае лучше поднять собвтенный почтовый сервер с ящиками пользователей (вариантов много, в зависимости от количества пользователей и бюджета).
Здраствуйте, пытаюсь настроить smtp на сервере. .Net MVC приложение при отправке сообщений выдает следующую ошибку System.Net.Mail.SmtpException: Сбой при отправке сообщения электронной почты. —> System.Net.WebException: Невозможно соединиться с удаленным сервером —> System.Net.Sockets.SocketException: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 127.0.0.1:25.
var client = new SmtpClient(«127.0.0.1», 25);
По инструкции сделал всё как было написано. Ip передавал и своего компьютера, добавлял свой ip в разрешенные на сервере, не помогает
Копирую в папку pickup текстовый фаил по примеру, почту указал правильную, не приходит тоже
Попробуйте для начала ручками отправить почту через командную строку telnet. См. статьи
https://winitpro.ru/index.php/2010/08/25/otpravka-elektronnoj-pochty-cherez-komandnuyu-stroku/
или
https://winitpro.ru/index.php/2017/08/11/otpravka-pisma-iz-telnet-s-smtp-avtorizaciej/
И внимательно посмотрите, что вам отвечает ваш SMTP сервер.
Возможно дело намного проще, чем кажется — например блокировка 25 TCP порта между клиентом и сервером.
как?
Добрый день!
А можно у себя иметь собственный почтовый сервер на который бы приходили письма и уходили. Типа любого почтового сервера, только у себя в миниатюре ? Доменное имя есть купленное.
Конечно можно, решений — легион. От почтовика корпоративного уровня типа Exchange или Zimbra до сборок из нужных компонентов на Linux (типа Postfix + Dovecot + MySQL + SpamAssasin + ClamAV + RoundCube).
На сайте есть пример использования Mailcow, готовой сборки полноценного почтовика на контейнерах (https://winitpro.ru/index.php/2021/04/05/mailcow-pochtovyj-server-postfix-dovecot-sogo-v-docker/)
Взлетает за час.
А на винде что-то есть стоящее, не хочется с линуксом связываться. Я сейчас зондирую почву вот по этой софтине hMailServer, не имели с ней дел ?
Сам не пользовал, но отзывы слышал неплохие. hMailServer вроде как простой и все в одном комбайн.
Здравствуйте! Такая проблема, настроил протокол smtp, пытаюсь отправить письмо себе на почту mail.ru и протокол просто отключается, не отправив письмо. При повторном включении все повторяется. Пинги проходят, порты открыты. Уже не знаю что ему нужно для полноценной работы. Заранее спасибо.
Включите логи SMTP в настройках, посомтрите в них ошибки.
+ ошибки и warnings в Event Viewer