IMAP-сервер для организации

11.10.2007 

Иванов Аркадий

     Задачи: 

1. Получать почту с сервера через Интернет на домашний компьютер по защищённому каналу (TLS, SSL), поскольку обычным IP-сниффером можно пронюхать передаваемые пароли.
2. Доступ к папкам должен быть с любого компьютера Интернета, т.е. почта не должна при скачивании уничтожаться на сервере.
3. Необходимо удалять, сортировать почту прямо на сервере без скачивания её к себе на компьютер.
Дополнение к задаче: Для авторизации необходимо использовать стандартные пользовательские пароли Linux сервера. Доступ через PAM (и только через PAM).


    Естествено для решения требуется просто выбрать нормальный IMAP-сервер и клиента, который нормально умеет работать с папками на сервере по протоколу IMAP.
В качестве почтовых клиентов у моих сотрудников стоит Seamonkey. Она поддерживает IMAP и шифрование.

 

Проблема выбора.

В качестве сервера я пробовал пакеты Courier-imap, Cyrus-imapd и uw-imap.

Courier-imap использует для хранения почты формат Maildir, что мне сразу не понравилось, поскольку Seamonkey не умеет работать с этим форматом и гибкость в администрировании почтовых файлов исчезает. Также Courier работает с PAM-аутентификацией только в режиме "root".

У Cyrus-imap формат хранения почты вообще собственный. Поэтому этот вариант глубоко не прорабатывался.

 

UW-IMAP сразу заработал понятным образом и удоволетворил и безопасности и форматом хранения файлов. Несколько замечаний по его использованию я для себя здесь напишу:

Настройка uw-imap.

 

Последний раз работал с AltLinux Server 4.0.0. Пакет uw-imap2004g.

После установки в файле /etc/xinetd.d/uw-imaps исправляем запись, чем и
разрешаем обращение к серверу:

                                       ...

                         disable = no

                              ...

Не забываем проконтролировать в /etc/xinetd.conf строчку с "only_from", которая может неожиданно ограничить доступ к сервисам с нужных вам хостов.

Дальше перезапускаем суперсервер xinetd:

service xinetd restart

Для того, чтобы Seamonkey не мучала пользователей при каждом запуске подозрениями о том, что сервер выдаёт левый сертификат (для SSL), следует сгенерить свой сертификат, который соответстует имени вашего сервера:

Сертификаты лежат в каталоге /var/lib/ssl/certs/ . Вот в этом каталоге мы и развернём деятельность.
Сертификат для IMAP называется imapd.pem

Генерируем пару ключей (секретный и публичный)  на 10 лет:

openssl req -new -x509 -days 3660 -newkey rsa:1024 -keyout privkey.pem -out pubkey.pem 

При генерации ключа будут запрошены дополнительно:
пароль(вводите любой, только запомните),
имя страны(ru),
регион (North Pole),
город (Kulichiki),
название организации (Roga i Kopyta),
название подразделения (Internet division),
имя вашего хоста - например mail.myinternal.net.ru
E-mail: superadministrator@domainname

ВНИМАНИЕ!!!Имя хоста, которое указывается при генерации сертификата , должно в точности совпадать с именем хоста на котором будет работать IMAP--сервер. В противном случае вся эта суета с генерацией сертификата ни к чему.

Убираем с приватного ключа пароль. В противном случае, сервис не сможет открыть приватный ключ.

mv privkey.pem privkey.pem.orig
openssl rsa -in privkey.pem.orig -out privkey.pem

  Копируем получившуюся парочку в один файл с нужным нам именем:

cat privkey.pem pubkey.pem >imapd.pem

 

  Вот собственно и всё, что требуется от настроек на сервере. :-)

 

Настройка почтовой программы, например, Seamonkey.

В Seamonkey надо создать профиль для почты с протоколом IMAP.
В параметрах IMAP-сервера указать использование протокола SSL (порт 993).

Настройка будет выглядеть примерно так:

seamonkey-imap


При первом запуске Seamonkey с подозрением спросит вас о сертификате, который она получила с сервера. Достаточно один раз ей подтвердить правильность сертификата и она при последующих запусках больше не будет приставать.

Почтовые файлы в формате mailbox будут лежать у вас в рабочих каталогах пользователей. Поэтому, чтобы не засорять домашний каталог я сделал в учётной записи общую папку для обработанной почты (MailSorted), в которой и создаю своё дерево с подпапками и отсортированными сообщениями.

Из приколов uw-imap: Если вы хотите иметь на сервере вложенные папки, то при создании папки вы должны сразу создать хотя бы одну вложенную. Т.е. если вы создаёте папку "Commerce" и хотите, чтобы в будущем вы могли вставить туда подпапки, вам следует Seamonkey указать сразу создание "Commerce/Firms".

 

Проверка.

Отключите в профиле почтового клиента использование SSL и проверьте, что оно не позволит получить почту по незащищённому каналу.

Написать автору статьи: arc@help0.ru