Настройка шлюза обмена DavMail на сервере Debian 7

При использовании Microsoft Exchange в качестве электронной почты может возникнуть необходимость получить доступ к учётной записи Exchange с почтового клиента, который не поддерживает протокола Exchange.

В такой ситуации на помощь приходит DavMail – программа, преобразовывающая протокол Microsoft Exchange в открытые протоколы POP, IMAP, SMTP, Caldav, Carddav и LDAP.

Установка DavMail

Для корректной работы DavMail следует предварительно установить зависимости программы.

sudo apt-get install default-jre libswt-gtk-3-java libswt-cairo-gtk-3-jni

Сайт проекта DavMail предоставляет пакет для Debian. Загрузите этот пакет при помощи wget:

wget http://sourceforge.net/projects/davmail/files/davmail/4.4.1/davmail_4.4.1-2225-1_all.deb

Установите полученный пакет с помощью команды dpkg:

sudo dpkg -i davmail_4.4.1-2225-1_all.deb

Базовая настройка

У DavMail нет стандартного конфигурационного файла, потому его нужно создать вручную:

sudo nano /etc/davmail.properties

Переведите DavMail в режим server (при этом не требуется X11).

davmail.server=true

Включите режим remote и укажите в bind address свой IP или оставьте поле незаполненным:

davmail.allowRemote=true
davmail.bindAddress=

В davmail.url укажите ссылку на Outlook Web App/Outlook Web Access; как правило, такая ссылка заканчивается на /owa:

davmail.url=https://yourcompany.com/owa

Настройте режим подключения:

davmail.enableEws=auto

Настройте параметры портов:

davmail.imapPort=993
davmail.smtpPort=465
davmail.ldapPort=636
davmail.popPort=995
davmail.caldavPort=8443

Сохраните и закройте конфигурационный файл.

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

Для того чтобы включить шифрование SSL нужно создать сертификат и закрытый ключ SSL в формате PEM. Если у вас уже есть сертификат, подписанный надёжным ЦС, переходите к следующему разделу. В противном случае нужно создать самоподписанный сертификат.

Чтобы создать ключ RSA при помощи OpenSSL, используйте:

sudo openssl genrsa -out /usr/lib/ssl/private/davmail.key 2048

Убедитесь, что ключ принадлежит пользователю root и права доступа к нему установлены верно:

sudo chown root:root /usr/lib/ssl/private/davmail.key
sudo chmod 600 /usr/lib/ssl/private/davmail.key

Теперь создайте запрос на подпись сертификата:

sudo openssl req -new -key /usr/lib/ssl/private/davmail.key -out /usr/lib/ssl/certs/davmail.csr

OpenSSL задаст вам несколько вопросов. Самое важное из предложенных полей – Common Name; в нём нужно указать доменное имя или IP-адрес сервера, к которому будут подключаться почтовые клиенты (например, davmail.mydomain.com или 111.222.333.444). В остальных полях можно оставить стандартные настройки, нажав enter.

You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:New York
Locality Name (eg, city) [Default City]:New York City
Organization Name (eg, company) [Default Company Ltd]:Lolcats United
Organizational Unit Name (eg, section) []:Keyboard Cat Department
Common Name (eg, your name or your server's hostname) []:mydomain.com
Email Address []:me@mydomain.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Подпишите запрос на сертификат при помощи закрытого ключа, указав срок действия сертификата в днях (аргумент days):

sudo openssl x509 -req -signkey /usr/lib/ssl/private/davmail.key -in /usr/lib/ssl/certs/davmail.csr -out /usr/lib/ssl/certs/davmail.crt -days 365

Примечание: Согласно данной команде сертификат будет действителен в течение 365 дней.

Теперь сертификат готов к настройке.

Настройка SSL

Готовый SSL-сертификат нужно конвертировать в формат, понятный DavMail.

Примечание: При использовании сертификата, подписанного ЦС, замените davmail.key и davmail.crt своими именами соответствующих файлов.

Объедините файл сертификата и ключ при помощи команды cat:

sudo -s cat /usr/lib/ssl/private/davmail.key /usr/lib/ssl/certs/davmail.crt > /usr/lib/ssl/certs/davmail.pem
exit

Передайте все права доступа к полученному файлу пользователю root:

sudo chown root:root /usr/lib/ssl/certs/davmail.pem
sudo chmod 600 /usr/lib/ssl/certs/davmail.pem

Конвертируйте файл в pkcs12:

sudo openssl pkcs12 -export -in /usr/lib/ssl/certs/davmail.pem -out /usr/lib/ssl/certs/davmail.p12 -name “davmail”

При этом будет запрошен пароль для экспортирования.

Установите этот пароль, в противном случае DavMail не будет работать.

Установите права на файл:

sudo chown root:root /usr/lib/ssl/certs/davmail.pem
sudo chmod 600 /usr/lib/ssl/certs/davmail.pem

Откройте настройки DavMail:

sudo nano /etc/davmail.properties

Добавьте в файл следующие параметры, чтобы сообщить DavMail о местонахождении файла pkcs12 и новом пароле:

davmail.ssl.keystoreType=PKCS12
davmail.ssl.keystoreFile=/usr/lib/ssl/certs/davmail.p12
davmail.ssl.keyPass=password
davmail.ssl.keystorePass=password

Параметры davmail.ssl.keyPass и davmail.ssl.keystorePass должны иметь одинаковые значения. Сохраните изменения и закройте файл.

Итак, теперь DavMail поддерживает сертификат SSL.

Запуск DavMail

Ранее загруженный пакет Debian не содержит init-скрипта, потому нужно создать его самостоятельно:

sudo nano /etc/init.d/davmail

Скопируйте и вставьте в файл следующий код:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          davmail
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DavMail Exchange gatway
# Description:       A gateway between Microsoft Exchange and open protocols.
### END INIT INFO
# Author: Jesse TeKrony <jesse ~at~ jtekrony ~dot~ com>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Davmail Exchange gateway"
NAME=davmail
CONFIG=/etc/davmail.properties
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="$CONFIG"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
LOGFILE=/var/log/davmail.log
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS >> $LOGFILE 2>&1 &
[ $? != 0 ] && return 2
echo $! > $PIDFILE
exit 0
}
#
# Function that stops the daemon/service
#
do_stop()
{
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart| force-reload}" >&2
exit 3
;;
esac

Сохраните и закройте файл.

Сделайте скрипт исполняемым, запустите сервис и настройте его автоматический запуск.

sudo chmod +x /etc/init.d/davmail
sudo service davmail start
sudo update-rc.d davmail defaults

Настройка клиента

Итак, теперь сервер запущен, можно приступать к настройке почтовых клиентов.

Создайте новую учётную запись, используя опцию manual почтового клиента. Для серверов IMAP и SMTP нужно указать доменное имя или IP-адрес сервера (то же значение, что и в строке Common Name при настройке SSL-сертификата). Имя пользователя IMAP и SMTP – адрес электронной почты без доменного имени (к примеру, если почтовый адрес mail@yourcompany.com, то имя пользователя – mail). Также нужно настроить IMAP и SMTP для поддержки SSL/TLS, а не STARTTLS.

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

Дополнительные инструкции по настройке Thunderbird, Mac OSX и iOS можно найти на сайте DavMail.

Теперь вы можете отправлять и принимать почту при помощи учётной записи Microsoft Exchange, используя открытые протоколы.

Tags: , ,

Добавить комментарий