Сегодня 23 декабря, понедельник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7278
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Журнал Витуса.
Журнал Витуса.
Голосов: 2
Адрес блога: http://vitus-wagner.livejournal.com/
Добавлен: 2008-02-19 12:48:41 блограйдером Lurk
 

Почтовый ящик с бананами

2015-06-24 10:39:31 (читать в оригинале)

Вчера я, наконец, нашел время и доделал последний штрих к конфигурации почтового сервера на 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 comment count unavailable comments

Тэги: banana, debian, open, source

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.