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 с подозрением спросит вас о сертификате, который она получила с сервера. Достаточно один раз ей подтвердить правильность сертификата и она при последующих запусках больше не будет приставать.

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

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

 

Проверка.

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