Не секрет, что одинесник - это не только ценный мех программист, но и консультант, постановщик учета, админ и тд. (может как раз из-за этого нас не очень жалуют ни те, ни другие) и лично мне нравится, что у нас такая широкая специализация...
Ну что ж - поадмниним: в этой статье я хочу рассказать о настройке собственного почтового сервера.
Подготовительный этап
Зачем? Причины у каждого свои - поэтому приведу те, что важны для меня:
- Быстрая скорость работы почты внутри предприятия
- Полный и удобный доступ к администрированию почты
- IMAP (мега удобно, жаль не многие хостеры/провайдеры предоставляют этот сервис)
- Получить дополнительный опыт
Итак, для начала определимся с минимальными требованиями:
- Компьютер с Windows, одним интерфейсом смотрящий в инет
- Постоянный IP-адрес и вменяемый провайдер
- Зарегистрированный домен + 2 DNS сервера + возможность управлять записями DNS
Если по первым двум пунктам думаю все ясно, то по третьему пункту я вкратце опишу необходимый порядок действий. Для начала следует зарегистрировать домен - это можно сделать бесплатно, а можно и отдать регистратору. Я воспользовался вторым вариантом - нашел компанию (http://cyfra.ua), которая предлагает услуги по регистрации и поддержке доменов. Они весьма шустренько зарегистрировали мне домен в зоне kiev.ua, предоставили свои DNS, панельку для управления и даже почтовый хостинг (отказываться не спешим - он нам еще понадобится).
В качестве примера, я буду использовать домен firma.kiev.ua
Установка и настройка ПО
Дальше устанавливаем сам софт. Я выбрал hmailserver - соответственно про него писать и буду. Понравился он мне по двум причинам: поддержка IMAP и бесплатность.
В процессе установки будет предложено выбрать сервис для хранения базы данных: либо встроенный SQL-lite, или же свой SQL-сервер. Рекомендую выбрать первый пункт, поскольку сами письма все равно хранятся в файлах и требования к серверу БД не такие как у 1С . После установки нужно проверить настройки файерволла - должен быть открыт порт 25 и 110/143 - если вы хотите получать почту, находясь не только в офисе.
Основные моменты в настройке:
Заходим в Settings - Protocol и галочками отмечаем необходимые нам службы (все три: SMTP,POP3,IMAP). В настройка SMTP заполняем
Max message size (максимальный размер сообщения - у меня 20Мб),
Number of retries - 24, minutes between every retry - 30 (сколько раз и с какой частотой пытаться доставить почту),
Local host name - mail.firma.kiev.ua (сам компьютер может называться как-угодно)
SMTP Relayer - оставляем пустым
Bind to local IP address - оставляем пустым
Затем Advanced - IP ranges - там добавляем записи:
LocalNet - 192.168.0.0 - 192.168.0.255 (естественно ставим свои), и галочками снимаем доступ Allow deliveries from External to External e-mail addresses и Require SMTP authentication External to local e-mail addresses
Internet - 0.0.0.0 - 255.255.255.255 с такими же настройками
В Advanced - TCP/IP ports проверяем что бы в качестве IP адресов стояли 0.0.0.0 (порты стандартно 23/110/143)
Ну и конечно же добавляем домен - firma.kiev.ua (настройки можно оставить по умолчанию) и в нем хотя бы пару аккаунтов (если у вас есть Active Directory - можно импортировать из него), настройки там интуитивно понятны. Теперь можно и потестировать работу почты внутри сети - должно все работать.
Настройка DNS...
Но к сожалению это только верхушка айсберга... во всем мире ведь никто не знает, что мы такие молодцы и у нас свой сервер - нам надо «засветиться». Для этого в панели управления доменом добавляем (изменяем если уже есть) такие записи:
A mail.firma.kiev.ua 222.222.222.222 (тут наш постоянный внешний IP - теперь наш комп имеет нормальное имя во всемирной паутине)
MX firma.kiev.ua mail.firma.kiev.ua 10 (назначаем «старшего» по почте)
Изменения вступят только через некоторое время! Проверить легко - обычным пингом на mail.firma.kiev.ua - рано или поздно мы начнем пинговать свой собственный сервер.
...и прочие танцы с бубном
В теории это все: сервер запустили, всем сообщили - ждем почту / отправляем свою. На практике большую часть почты, которую мы хотим кому-то послать, другие серверы будут заворачивать. Ответ прост - СПАМ. На сегодняшний день есть много способов как по рассылке спама, так и по борьбе с ним. Один из первых способов борьбы со спамом - это обратный DNS-запрос. Объясню на пальцах:
Например отправляем мы письмо с нашего сервера на адрес лалала@mail.ru. Наш сервер соединяется с сервером мейл.ру и говорит: Привет, я mail.firma.kiev.ua, хочу послать тебе письмо. Майл.ру делает DNS-запрос - какой адрес у сервера mail.firma.kiev.ua - получает ответ 222.222.222.222 (это прямой запрос), но этого ему мало - он посылает запрос вашему провайдеру - «кто такой 222.222.222.222» и получает ответ что-то типа «222_static.ads.mysip.net» - налицо несоответствие и наш сервер посылают куда подальше (вдруг спамер). Что бы этого не случилось - нам нужно сообщить нашему провайдеру, что мы не просто «222_static.ads.mysip.net», а «mail.firma.kiev.ua» и он внесет соответствующую запись в свои настройки (PTR запись).
Все? Фиг там! Готовьтесь как минимум к еще одной проблеме. Так как вы со своим сервером - новый член почтового сообщества, то на первых порах к вам будут относится с большим подозрением. Протокол SMTP (тот, на котором сервера общаются между собой) придуман много лет назад и все стандарты полностью описаны в соответствующей документации. Но соблюдают их ничем не лучше, чем мы соблюдаем рекомендации 1С по написанию обработок . Каждый администратор почтового сервера сам себе начальник и сам устанавливает условия работы своего сервера - от кого принимать, кому отказать и так далее.
И что делать? Нужно анализировать ответы других серверов (сообщения типа MAILER-DAEMON и тп) - в большинстве случаев проблема будет описана в сообщении - почему чужой сервер не захотел принимать от вас сообщения.
Возможные варианты (не дословно, а по смыслу):
- Ваш сервер в спам-списке - в самом сообщении обычно указывают в каком именно списке ваш сервер засветился. Для решения проблемы нужно проверить свою сеть на наличие вирусов, затем зайти на указанный сайт и заполнить заявку на исключение вашего сервера из списка
- Ваш сервер/домен отсутствует в списке доверенных и тп - скорее всего удаленный сервер очень жестко настроен - разрешается доступ только определенным серверам/доменам. Для решения нужно связаться с администратором этого сервера, что бы он внес ваш сервер в «белый» список.
- Временная ошибка, «перезвоните попозже» - тут два варианта - чужой сервер действительно перегружен/занят/пошел покурить, или же это «проверка на вшивость» - так называемый серый список. Это еще один способ борьбы со спамерами - суть такова: по правилам каждый почтовый сервер должен предпринимать попытки доставить почту через определенные промежутки времени (боюсь быть не точным - каждые полчаса в течение трех суток). Естественно, что спамер вряд ли будет это делать, соответственно настоящий сервер таки добьется своего и письмо доставит. Такие проверки устраивают единоразового для каждого нового сервера или же с какой-то периодичностью. Решение: ничего не делать - просто ждать (при условии, что вы верно внесли настройки описанные выше - их достаточно для преодоления большинства проверок типа «серый список»). Дольше всего мне пришлось ждать «разрешения» от ukr.net - благо они в ответ дают ссылку http://www.ukr.net/mta/std3.html, где все подробно разжевано.
- Ну и всевозможные ошибки, связанные с неправильной настройкой сервера, DNS или заголовков письма - тут нужно разбираться в каждом случае отдельно.
Есть путь и проще - достаточно пересылать всю исходящую почту на SMTP-сервер провайдера (настройка SMTP Relayer) и все эти проблемы лягут на провайдера, но мы ведь не ищем легких путей ;)
Про азы борьбы со спамом, преимущества протокола IMAP на практике, а также что делать с входящей почтой когда ваш сервер в оффлайне расскажу в следующей статье. Если, конечно, будет интерес.
P.S. Как маленький бонус - для доступа к корпоративной сети извне по RDP/VPN/etc теперь не надо набирать IP-адрес - ведь у нас есть собственное имя