IMAP и POP3


Несмотря на то что вы можете войти непосредственно в систему FreeBSD и прочитать свою почту, ваши клиенты и конечные пользователи наверняка предпочтут пользоваться удобными клиентскими программами чтения электронной почты, такими как Thunderbird или Eudora. Операционная система FreeBSD поддерживает работу с подобными клиентскими программами через различные «порты» и пакеты. Для передачи электронной почты клиенту служат два стандартных протокола — IMAP и POP3.

Протокол интерактивного доступа к электронной почте (Internet Message Access Protocol, IMAP) позволяет пользователям настольных компьютеров синхронизировать свою почту с центральным почтовым сервером. Синхронизация почтовых ящиков на сервере IMAP может выполняться с нескольких клиентских машин: так, имея настольный компьютер и ноутбук, вы сможете получить всю свою электронную почту на обе машины. Протокол IMAP очень популярен в корпоративных сетях, где клиентам разрешается хранить электронную почту на сервере. Но интернет-провайдерам я не рекомендую использовать IMAP для организации службы электронной почты. При использовании IMAP клиенты ожидают, что провайдер будет хранить их почту вечно, и разочаровываются, даже негодуют, когда сбои в работе аппаратного обеспечения демонстрируют ошибочность этих ожиданий. Возложите ответственность за сохранность электронной почты на самих клиентов. Тем не менее протокол IMAP отлично подходит для использования в офисе, поэтому ниже в этой главе мы рассмотрим использование IMAP через SSL.

Почтовый протокол (Post Office Protocol, POP) версии 3 — это очень простой протокол, позволяющий пользователям загружать электронную почту на настольный компьютер. Протокол POP3 очень популярен у интернет-провайдеров и на небольших предприятиях из-за его простоты. Большинство IMAP-серверов кроме IMAP могут предоставлять и услуги POP3, поэтому для удовлетворения всех наших потребностей достаточно будет одного демона. Мы рассмотрим работу POP3 через SSL, что обеспечивает защиту имени пользователя и пароля, а также содержимое самого почтового отправления.

Самые простые серверы IMAP, такие как imap-wu, позволяют лишь синхронизировать почтовые клиенты со стандартным почтовым буфером UNIX в каталоге /var/mail. Другие, такие как Cyrus IMAP, поддерживают возможность работы с десятками тысяч пользователей. Сервер Dovecot IMAP занимает промежуточное положение. Он обладает богатыми возможностями, достаточными для большинства применений, и при этом настолько прост, что для его обслуживания не требуется нанимать дополнительный персонал. Кроме того, автор сервера Dovecot предлагает награду в тысячу евро тому, кто первым «укажет брешь в защите Dovecot, которую можно использовать удаленно». Многие уже потратили массу времени в попытках получить награду, но это еще никому не удалось.

Установка Dovecot

Найти сервер Dovecot можно в каталоге /usr/ports/mail/dovecot. Dovecot может взаимодействовать с серверами LDAP, различными типами баз данных и системами аутентификации; кроме того, он поддерживает множество других конфигурационных параметров. Однако для создания типичного почтового сервера, обслуживающего пользователей системы FreeBSD, нам достаточно установить Dovecot в стандартной конфигурации. Перейдите в каталог «порта» и запустите команду make all install clean.

Вместе с сервером Dovecot устанавливаются целый пакет документации (в каталог /usr/local/share/doc/dovecot) и примеры конфигурационных файлов (в каталог /usr/local/etc). Подобно серверу Apache, у сервера Dovecot масса конфигурационных параметров, которые лучше не трогать без особой нужды. Все свое внимание мы сосредоточим на том, чтобы организовать службы POP3 и IMAP через SSL. Можно реализовать услуги электронной почты без SSL или какой-либо другой криптографической защиты, но в современном Интернете это будет не самый лучший выбор.

Конфигурирование сервера Dovecot

Скопируйте пример конфигурационного файла /usr/local/etc/dovecot-example.conf в /usr/local/etc/dovecot.conf и откройте его в текстовом редакторе. Верите или нет, но чтобы обеспечить безопасность функционирования сервера Dovecot в системе FreeBSD, требуется внести не так уж много изменений.

По умолчанию Dovecot предлагает реализацию служб IMAP и POP3 без шифрования. Это общепринятый стандарт в современном Интернете, но все современные почтовые клиенты поддерживают возможность передачи аутентификационной информации и сообщений через SSL-соединение. Запись protocols определяет протоколы, предлагаемые сервером. Измените оба имени протоколов IMAP и POP3 на имена версий этих протоколов с поддержкой SSL, добавив символ s в конец имени каждого из них:

protocols = imaps pop3s

Теперь с помощью параметров ssl_cert_file и ssl_key_file следует определить место, где Dovecot будет хранить сертификаты SSL. В состав программного обеспечения Dovecot входит сценарий, создающий соответствующие самозаверенные сертификаты, впрочем, вы можете использовать заверенные сертификаты, как описано в главе 9.

ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem

Если изменить эти значения по умолчанию, придется отредактировать сценарий создания самозаверенных сертификатов, чтобы указать правильные каталоги сохранения. Фанаты FreeBSD определенно могут вам порекомендовать изменить сценарий так, чтобы он сохранял сертификаты в каталоге /usr/local/etc/ssl, но тогда после каждого обновлении Dovecot вам придется снова изменять сценарий. Местоположение файлов SSL не так уж важно, при условии, что вы документируете параметры настройки системы.

Создание сертификата SSL в Dovecot

Можно создавать самозаверенные сертификаты, как описано в главе 9, но у Dovecot есть сценарий командного интерпретатора, создающий необходимые сертификаты с учетом потребностей сервера Dovecot. Сценарий и конфигурационный файл находятся в каталоге /usr/local/share/dovecot. Откройте в текстовом редакторе конфигурационный файл dovecot-openssl.cnf. Параметры настройки должны выглядеть очень знакомыми по главе 9, но поскольку мы ушли вперед почти на полкниги, еще раз вкратце рассмотрим их здесь.

В начале файла находятся такие настройки, как тип сертификата и степень его сложности. Оставьте этим параметрам значения по умолчанию. Если потребуется, вы сможете изменить их позднее.

Параметр C — это двухбуквенный код страны. Я живу в Соединенных Штатах, поэтому присваиваю значение C=US.

Параметр ST — это название штата или области, a L — название населенного пункта. Я живу в городе Детройт, штат Мичиган, поэтому присваиваю следующие значения:

ST=Michigan
L=Detroit

Параметр O — это название организации. Если вы работаете на какую-то компанию, укажите здесь ее название. Если нет — вставьте свое имя.

Параметр OU — это подразделение организации или отдел, отвечающий за поддержку данной системы. Обычно здесь я указываю Email Team (группа поддержки электронной почты).

Параметр common name — это имя хоста сервера, возвращаемое при обратном поиске в DNS, которое клиенты будут использовать для подключения к серверу. Это имя в большинстве случаев совпадает с именем хоста сервера. Например, имя моего хоста — bewilderbeast.blackhelicopters.org.

Параметр emailAddress — это адрес электронной почты человека, отвечающего за работу сервера. Это может быть и групповой адрес, например helpdesk@mycompany.com.

Это все, что требуется серверу Dovecot для создания собственного самозаверенного сертификата. Теперь достаточно просто запустить сценарий mkcert.sh:

# /usr/local/share/dovecot/mkcert.sh

Вот и все! Ваш самозаверенный сертификат готов.

Запуск сервера Dovecot

Активизируйте Dovecot в файле /etc/rc.conf, добавив параметр dovecot_enable="YES", а затем запустите его командой /usr/local/etc/rc.d/dovecot start. Файл /var/log/maillog покажет вам, что сервер запустился и инициализировал механизм поддержки SSL.

Теперь у вас имеется работающий сервер Dovecot! Настройте клиент и попробуйте обратиться к серверу. Не забудьте указать клиенту, что соединение должно устанавливаться через SSL! Любые возникшие ошибки будут отражены в файле /var/log/maillog.

Осталось самое сложное — отделить ошибки на стороне сервера от ошибок на стороне клиента. У каждого клиента электронной почты есть свои недостатки и достоинства. Отделить ошибки, связанные с клиентом, от ошибок сервера бывает весьма непросто, особенно в случае незнакомого программного обеспечения. При решении проблем, связанных с клиентами, важно уметь проверять почтовую учетную запись вообще без использования клиента.

Проверка POP3S

Мы настроили службу POP3 на использование SSL, а это означает, что мы не можем использовать команду telnet, чтобы установить прямое соединение с сервером. Однако в главе 9 мы видели, что команду openssl(1) можно использовать для соединения с удаленными портами способом, напоминающим telnet. Эту команду можно использовать для доступа к интерфейсу SSL POP3 почтового сервера. Сервис POP3S прослушивает порт 995. Ниже приводится пример сеанса связи с интерфейсом POP3S моего почтового сервера:

# openssl s_client -connect bewilderbeast.blackhelicopters.org:995
C0NNECTED(00000003)
...
+0К Dovecot ready.

Теперь, когда соединение установлено и Dovecot готов к общению, идентифицируйте себя с помощью команды user.

user mwlucas
+OK

С помощью команды pass введите свой пароль. Пароль будет отображаться на экране в открытом текстовом виде, поэтому позаботьтесь, чтобы никто не подглядывал!

pass n0tmyr3alpassw0rd!
+OK Logged in.

Соединение установлено! Теперь проверим наличие почтовых сообщений.

list
+OK 2 messages:
1 1391
2 4258

Сообщение 1 имеет размер 1391 байт, а сообщение 2 — 4258 байтов. Чтобы просмотреть сообщение, нужно ввести команду retr с номером сообщения.

Если вам удалось выполнить все эти команды, можно быть уверенным в работоспособности POP3S. Настройка произвольного клиента для работы с POP3S выходит за рамки этой книги.

Проверка IMAPS

Проверка работоспособности IMAPS мало чем отличается от проверки POP3S. Проверив IMAPS вручную, можно сразу же отсечь все проблемы, связанные с настройкой клиентских программ. Протокол IMAPS намного сложнее, чем POP3, и некоторые из его команд, нужные вам, выглядят очень неуклюже. (Мой технический редактор признал, что я храбрее его, поскольку отважился выполнить проверку IMAP вручную. Ого!) Сервис IMAPS прослушивает порт 993, но команда openssl(1) практически идентична той, что использовалась для проверки POP3S:

# openssl s_client -connect bewilderbeast.blackhelicopters.org:993
CONNECTED(00000003)
...
* OK Dovecot ready.

Обратите внимание: сервис IMAPS использует символ звездочки (*) вместо плюса (+), применяемого в сервисе POP3S. Все команды IMAP начинаются с числа. Например, для идентификации и аутентификации следует ввести команду 01 LOGIN с именем пользователя и паролем:

01 LOGIN mwlucas n0tmyr3alpassw0rd!
01 OK Logged in.

Соединение с сервером IMAP установлено. Теперь с помощью команды 02 LIST можно выяснить, какие каталоги имеются в учетной записи:

02 LIST "" *
* LIST (\NoInferiors \UnMarked) "/" "Junk E-mail"
* LIST (\NoInferiors \UnMarked) "/" "mwlucas"
* LIST (\NoInferiors \UnMarked) "/" "INBOX"
02 OK List completed.

Пока все идет хорошо. Давайте посмотрим, что находится в каталоге INBOX, с помощью команды 03 SELECT:

В моей папке по умолчанию имеются 2 сообщения (1). Здесь видно, что следующему сообщению будет присвоен номер 3, поэтому текущие сообщения имеют номера 1 и 2. Посмотрим, можно ли получить первое сообщение, введя следующую команду:

06 UID fetch 1:1 (UID RFC822.SIZE FLAGS BODY.PEEK[])

В результате первое сообщение, находящееся в папке по умолчанию, должно появиться на экране. (Если к этому моменту вы уже задействовали IMAP, скорее всего сообщение будет иметь номер больше 1.) Наконец, с помощью команды 07 LOGOUT, отсоединитесь от сервера.

Если вам удалось выполнить все эти команды, можно быть уверенным в работоспособности IMAP через SSL. Проверьте настройки клиента.

Программы Sendmail и Dovecot можно изучать и изучать, но уже сейчас вы сможете реализовать базовую почтовую службу для корпоративных клиентов и клиентов. А теперь перейдем к изучению возможности реализации веб-сервера в операционной системе FreeBSD.

Комментарии запрещены.