Бродвейский мюзикл "It Shoulda Been You" закроется 9 августа
Вчера я, наконец, нашел время и доделал последний штрих к конфигурации почтового сервера на Banana ...
Вчера я, наконец, нашел время и доделал последний штрих к конфигурации почтового сервера на Banana Pi.
Так я вообще-то уже две недели им пользуюсь, но до сих пор у пользователей не было возможности самостоятельно, без обращения к системному администратору, то есть мне, менять свои пароли. Теперь есть. Заодно разобрался в некоторых, еще не во всех, тонкостях взаимодействия Prayer Web mail с managesieve.
На мой взгляд, получилось вполне self-contained решение.
Конечно некоторые могут сказать, что почта должна использовать общесетевую базу пользователей, например из ldap, но эти некоторые пускай сами настраивают.
Собственно, новой для меня задачей в этой истории было сделать так, чтобы почтовые пользователи не должны были быть системными пользователям. Если заводить всех почтовых польозователей как системных, то prayer-accountd из дистрибутива задачу управления паролями и finger information решает из коробки.
Но мне интересно было решить задачу с виртуальными пользователями, авторизационная информация по которым хранится в базе данных (sqlite). Поэтому пришлось нарисовать свой собственный accountd. Благо протокол accountd крайне простой.
Получилось решение, которое
1. Хранит архивы почты у меня на столе, а не где-то в облаке
2. Позволяет доступ по IMAP и отправку почты из любой точки земного шара
3. Позволяет доступ через web-интерфейс, если вдруг по каким-то причинам нет возможности использовать нормальный эргономичный почтовый клинент
4. Осуществляет server-side фильтрацию почты, например раскладывает списки рассылки в отдельные папки. Правила фильтрации настраиваются через стандартный протокол managesieve, к которому есть и отдельные клиенты и плагины к почтовым клиентам, либо через веб-интерфейс.
5. Имеет обучаемый пользователями байесовский спамфильтр, причем общий для всех пользователей.
Обучение сводится к тому что проскочивший фильтры спам надо складывать в папку "спам", а весь не спам куда-то перекладывать из INBOX-а. Можно - в "Корзину".
Кстати, спама почему-то стало ощутимо меньше. Возможно потому что я поменял исторически сложившиеся настройки spamassassin-а на дистрибутивные.
6. Пользователи могут менять пароли (через веб-интерфейс к почте).
Получилась следующая картина:
Аппаратура:
Banana PI, 16 Гб UHS SD-карта, самодельный жестяной корпус.
Установлены:
postfix, dovecot, spamassassin и prayer.
Есть sqlite-база которой пользуется dovecot для авторизации и postfix для проверки существования адреса.
Вообще есть мысль в ту же базу засунуть еще таблицу алиасов (которая virtual_alias_map) и научить accountd ее редактировать, чтобы в web-интерфейсе prayer заработала функциональность "перенаправить почту на более другой адрес". Мне это нафиг не нужно, но ради спортивного интереса и полноты реализации протокола accountd...
У postfix в master.cf описан транспорт dovecot, который сначала фильтрует почту через spamc, а потом отправляет в dovecot-lda. Этот транспорт прописан как виртуальный транспорт для всех доменов. Естетсвенно, включена smtp-авторизация. Через dovecot-овский sasl, то есть кончается все дело той же sqlite-базой.
С доменами у меня сделано так, что каждый пользователь имеет адрес во всех доменах, которые поддерживаются на сервере. Можно было бы развести, но зачем?
Соответственно доступ к почте поддерживается по imap over ssl и через web-интерфейс. Управление фильтрами - через manage-sieve (благо в нем есть starttls) или через тот же web-интерфейс. У prayer, кстати, есть довольно неплохой консруктор фильтров, который пишет за человека sieve скрипты. Если бы он еще знал о существовании в sieve расширения spamtest...
На входном роутере у меня порты 443 993 465 и 4190 отправляются на эту коробочку. А 22 и 80 - на рабочую станцию. 25 вообще у провайдера закрыт. Поэтому приходится направлять MX на VDS, с которой почта перенаправляется опять же через postfix-овские virtual transport через openvpn. Что позволяет вообще пользоваться провайдером за NAT-ом. Где бы я эту коробочку ни включил, как только она загрузится и установит OpenVPN-соединение с VDS, почта в обе стороны ходить будет (Правда читать ее смогут только те, кто в одной локальной сети с этой коробочкой). Но поскольку провайдер дает достижимый извне IP, то читать почту и отправлять ее можно откуда угодно - 465 порт не фильтруется. А зафильтруют, так 587 есть.
На самом деле еще на этой коробочке крутится SNIProxy, которая перенаправляет https-запросы к home.wagner.pp.ru (а не к mail.wagner.pp.ru) на рабочую станцию. Чтобы можно было снаружи рулить transmission-ом через web-интерфейс.
К сожалению, найти web-mail, который бы уживался на одном виртуальном сервере с другими веб-приложениями мне не удалось, поэтому весь https://mail.wagner.pp.ru занят prayer-ом (и он же является там web-сервером).
В данной конструкции не описан greylisting и мендежер списков рассылки, потому что они стоят на VDS. Грейлистинг - по совершенно очевидным причинам, а менеджер списков рассылки чтобы не гонять их траффик туда-обратно через vpn.
Резервное копирование:
По крону rsync-ом на рабочую станцию. Не rsnapshot-ом а просто rsync-ом. rsnapshot-ом оно потом на внешний носитель копируется, а на диске рабочей станции есть просто ровно одна копия всей файловой системы почтового сервера.
http://vitus-wagner.dreamwidth.org/1099737.html. Please comment there using OpenID. Now there are
comments
Каст-альбом бродвейского мюзикла "It Shoulda Been You" будет выпущен 14 августа 2015 года
Сиерра Боггесс исполняет песню "A Little Bit Less Than" из бродвейского мюзикла "It Shoulda Been You ...
Сборы бродвейских мюзиклов за неделю после вручения премии "Тони-2015"