Введение Я успешно эксплуатирую vds с centos (postfix и dovecot) в качестве внешнего почтовика для отправки почты и, на всякий случай, для временного приема почты (тариф недорогой, места надолго не хватит). Работает прекрасно. Я доволен. Но случилось один раз приключение: в понедельник, до начала рабочего дня, менеджер отправил важное письмо. Outlook съел, положил в отправленные. Менеджер успокоился. На 15 мин, т.к. не пришла отбивка о доставке (не о прочтении, а о доставке на сервер-получатель). Позвонил мне, я попытался отправить с мобилы. Отправил (для простоты на gmail), а письмо не пришло. Через 15 мин я приехал на работу (благо уже подъезжал), пришлось сделать только одно маленькое действие: service postfix restart.
И почта пошла дальше, и тестовые письма сразу побежали. НО! Важное письмо пришло с опозданием на 30 минут и мы попали.
При этом был резервный smtp, через него могло все пройти (это smtp хостера, где обслуживается домен, а не vds). Но проблема в том, что менеджер не знал, что есть проблема и письмо висит в очереди на отправку в postfix-е ;)
Задача После этого мне поставили задачу: нужен сервер для отправки (хотя бы для отправки), чтобы был 100% без зависонов, глюков и прочего.
Т.к. 100%, то это явно внешний, не привязанный к офисному провайдеру (хоть и городского масштаба). На толстом канале и с резервированием. Лучше, если все-таки я его буду контролировать (самое уязвимое место в цепочке ;)).
Что вы можете посоветовать?
Варианты, которые мне приходят в голову:
- Сменить хостера на linode.com (вроде он один из лучших), хотя бы за $20/мес. Недорого, в общем-то, оперативки больше, но все равно что-то зависнуть может так же, я же не кластер арендую саморегулирующийся )) Если что-то зависнет, это может быть просто неожиданность в виде глюка из-за кривого письма, которое примет сервер и задумается в муках. Ну или вы поняли, все равно может быть ситуация, когда мне придется просто дать команду на перезапуск службы. Но это будет сделано после возможной проблемы.
- Купить тот же Kerio Connect (дорого, но мне минимум нужен) и запустить его в том же linode. Будет, наверное, стабильнее. (Эээ, я не флеймить ради, люди!). Просто привожу разные варианты. 439 евров - это не мало, но можно рассматривать.
- Сервисы типа fastmail.fm (бизнес email за $15/год). Вопрос в том, насколько они стабильны? Кто пользовался? Может быть, есть другие варианты в этом же духе?
- В этом же духе, но типа Outlook.com? Кстати, не факт, что он отбивки присылает о доставке! Я уже кучу таких вариантов видел.
Плюс вар.3,4 в том, что им постоянно кто-то пользуется и, по идее, они работают намного стабильнее, чем мой, ненагруженный, но ручной postfix?
- Возможно, есть вариант из двух серверов (один на linode, другой - у меня или еше где-то), которые постоянно как-то решают задачу черного ящика «письмо на входе должно быть отправлено! Сейчас же!». Возможно, это может Exchange? Тот же Kerio? Да, блин, тот же postfix (я бы хотел именно этого). Либо кто-то типа Amazon предоставляет услугу «почтовик в облаке»?
Может, есть еще идеи? И главное, хотя бы условно - КАК?
Лог Одновременно с этим могу описать произошедшее с почтой:
до перезапуска postfix на каждое письмо было в логах примерно такое:
Nov 25 08:53:12 relay postfix/cleanup[6349]: CB4C8305B4: message-id=<!&!AAAAAAA==@mail.com>
Nov 25 08:53:15 relay postfix/smtpd[6339]: disconnect from RELAY2.MAIL.COM[201.273.22.33]
Nov 25 08:56:35 relay postfix/anvil[6341]: statistics: max connection rate 1/60s for (smtp:201.273.22.33) at Nov 25 08:53:11
Nov 25 08:56:35 relay postfix/anvil[6341]: statistics: max connection count 1 for (smtp:201.273.22.33) at Nov 25 08:53:11
Nov 25 08:56:35 relay postfix/anvil[6341]: statistics: max cache size 1 at Nov 25 08:53:11
где RELAY2.MAIL.COM[201.273.22.33] - шлюз, через который мы выходим в интернет.
Ни одной записи postfix/qmgr.
Nov 25 09:47:26 relay postfix/postfix-script: stopping the Postfix mail system
Nov 25 09:47:26 relay postfix/master[1144]: terminating on signal 15
Nov 25 09:47:27 relay postfix/postfix-script: starting the Postfix mail system
Nov 25 09:47:27 relay postfix/master[6581]: daemon started -- version 2.3.3, configuration /etc/postfix
Nov 25 09:47:27 relay postfix/qmgr[6584]: 1211F30699: from=<postbox@mail.com>, size=130907, nrcpt=1 (queue active)
...
Далее с десяток отправленных писем, какие-то пошли на пересылку (этот почтовик у меня по mx записям не главный), какие-то отправлены сразу куда надо.
После рестарта postfix:
Nov 26 18:07:00 relay postfix/smtpd[12272]: 163473046B: client=RELAY2.MAIL.COM[201.273.22.33], sasl_method=DIGEST-MD5, sasl_username=postbox@mail.com
Nov 26 18:07:00 relay postfix/cleanup[12267]: 163473046B: message-id=<!&!AAAAAFDdmsI0BAAAAAA==@mail.com>
Nov 26 18:07:00 relay postfix/qmgr[6584]: 163473046B: from=<postbox@mail.com>, size=7733, nrcpt=1 (queue active)
Nov 26 18:07:02 relay postfix/smtpd[12272]: disconnect from RELAY2.mail.COM[201.273.22.33]
Nov 26 18:07:10 relay postfix/smtp[12271]: 163473046B: to=<arev233@gmail.com>, relay=....., status=sent (250 OK id=1VlJ7K-00007c-Ui)
Nov 26 18:07:10 relay postfix/cleanup[12267]: 5C3DB30474: message-id=<20131126140710.5C3DB30474@relay.mail.com>
Nov 26 18:07:10 relay postfix/bounce[12283]: 163473046B: sender delivery status notification: 5C3DB30474
Nov 26 18:07:10 relay postfix/qmgr[6584]: 163473046B: removed
т.е. приняли, обработали, отправили. Ну, грубо. Так?
Не могу понять, почему появились «max connection ...», а после перезапуска исчезли. Надо почитать. Возможно, как-то настроить smtpd_*, не знаю пока.
Все, что касается smtpd в main.cf:
smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_reverse_client_hostname,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
permit
smtpd_sender_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
smtpd_recipient_restrictions =
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_sasl_authenticated,
reject_unlisted_recipient,
permit_mynetworks,
reject_unauth_destination,
permit_auth_destination,
reject
smtpd_data_restrictions =
permit_mynetworks,
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit
smtpd_etrn_restrictions = reject
smtpd_helo_required = yes
smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
disable_vrfy_command = yes