如何在 Debian 7 VPS 上安装 DavMail Exchange 网关

介绍

如果您的工作场所或学校使用 Microsoft Exchange for 电子邮件,您可能希望从不支持 Exchange 协议的电子邮件客户端访问您的 Exchange 电子邮件帐户。

DavMail提供了一个解决方案,将Microsoft Exchange转换为开放的协议,如POP,IMAP,SMTP,Caldav,Carddav和LDAP。

安装

Davmail 需要一些额外的依赖才能正常工作. 使用 apt 安装它们:

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

DavMail 项目通过 [SourceForge] 在其网站上提供 Debian 包

使用 wget 下载最新 Debian 包:

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

然后用 dpkg 安装 DavMail:

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

基本配置

DavMail的配置文件默认情况下不存在. 使用您最喜欢的文本编辑器创建一个:

1sudo nano /etc/davmail.properties

将 DavMail 设置为服务器模式,以便不需要 X11:

1davmail.server=true

启用远程模式并将绑定地址设置为您的滴滴的 IP 地址或将其设置为空:

1davmail.allowRemote=true
2davmail.bindAddress=

davmail.url设置为您的 Outlook Web App/Outlook Web Access URL,通常以/owa结束:

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

设置您的连接模式:

1davmail.enableEws=auto

设置您的端口选项:

1davmail.imapPort=993
2davmail.smtpPort=465
3davmail.ldapPort=636
4davmail.popPort=995
5davmail.caldavPort=8443

保存并关闭配置文件。

创建一个SSL证书

要启用 SSL 加密,您将需要一个 SSL 证书和 PEM 格式的 SSL 私钥. 如果您从证书管理机构购买了证书,那么您应该已经拥有您的证书和密钥。

使用 OpenSSL 生成 RSA 密钥:

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

确保密钥由 root 拥有,并正确设置权限:

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

现在,创建一个证书签名请求:

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

OpenSSL 现在会问你几个问题.唯一重要的字段是 Common Name,该字段应该被设置为您的电子邮件客户端(例如 davmail.mydomain.com 或 123.123.123.123)访问的域名或 IP 地址。

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

使用您的私钥签署证书请求,用-days参数设置到到期日期:

1sudo 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

现在你已经拥有 SSL 证书,你将不得不将其转换为 DavMail 理解的格式. 下面的例子将使用我们上文生成的密钥和证书。

首先,将您的证书和密钥文件与猫相结合:

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

再次,设置权限,以便只有 root 才能访问关键文件:

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

现在将您的组合密钥和证书转换为pkcs12文件:

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

您将被要求输入出口密码. 这不能是空的!

您必须设置密码,否则DavMail不会正常工作。

设置许可:

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

现在重新打开您的 DavMail 配置:

1sudo nano /etc/davmail.properties

添加以下配置选项,以告知 DavMail 您刚刚生成的 pkcs12 文件的位置和您设置的密码句:

1davmail.ssl.keystoreType=PKCS12
2davmail.ssl.keystoreFile=/usr/lib/ssl/certs/davmail.p12
3davmail.ssl.keyPass=password
4davmail.ssl.keystorePass=password

davmail.ssl.keyPassdavmail.ssl.keystorePass都应该具有相同的值。

DavMail现在已配置为使用您的SSL证书。

开始戴维

我们下载的 Debian 包不包含 init 脚本,所以我们必须创建自己的。

使用您最喜欢的文本编辑器创建新文件:

1sudo nano /etc/init.d/davmail

将以下内容复制并粘贴到文件中:

  1#! /bin/sh
  2### BEGIN INIT INFO
  3# Provides:          davmail
  4# Required-Start:    $remote_fs $syslog
  5# Required-Stop:     $remote_fs $syslog
  6# Default-Start:     2 3 4 5
  7# Default-Stop:      0 1 6
  8# Short-Description: DavMail Exchange gatway
  9# Description:       A gateway between Microsoft Exchange and open protocols.
 10    ### END INIT INFO
 11
 12    # Author: Jesse TeKrony <jesse ~at~ jtekrony ~dot~ com>
 13
 14    PATH=/sbin:/usr/sbin:/bin:/usr/bin
 15    DESC="Davmail Exchange gateway"
 16    NAME=davmail
 17    CONFIG=/etc/davmail.properties
 18    DAEMON=/usr/bin/$NAME
 19    DAEMON_ARGS="$CONFIG"
 20    PIDFILE=/var/run/$NAME.pid
 21    SCRIPTNAME=/etc/init.d/$NAME
 22    LOGFILE=/var/log/davmail.log
 23
 24    # Exit if the package is not installed
 25    [ -x "$DAEMON" ] || exit 0
 26
 27    # Read configuration variable file if it is present
 28    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
 29
 30    # Load the VERBOSE setting and other rcS variables
 31    . /lib/init/vars.sh
 32
 33    # Define LSB log_* functions
 34    . /lib/lsb/init-functions
 35
 36    #
 37    # Function that starts the daemon/service
 38    #
 39    do_start()
 40    {
 41        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
 42            || return 1
 43        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
 44            $DAEMON_ARGS >> $LOGFILE 2>&1 &
 45        [ $? != 0 ] && return 2
 46        echo $! > $PIDFILE
 47        exit 0
 48    }
 49
 50    #
 51    # Function that stops the daemon/service
 52    #
 53    do_stop()
 54    {
 55        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
 56        RETVAL="$?"
 57        [ "$RETVAL" = 2 ] && return 2.
 58        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
 59        [ "$?" = 2 ] && return 2
 60        rm -f $PIDFILE
 61        return "$RETVAL"
 62    }
 63
 64    case "$1" in
 65      start)
 66        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
 67        do_start
 68        case "$?" in
 69            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 70            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 71        esac
 72        ;;
 73      stop)
 74        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
 75        do_stop
 76        case "$?" in
 77            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 78            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 79        esac
 80        ;;
 81      status)
 82           status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
 83           ;;
 84      restart|force-reload)
 85        log_daemon_msg "Restarting $DESC" "$NAME"
 86        do_stop
 87        case "$?" in
 88          0|1)
 89            do_start
 90            case "$?" in
 91                0) log_end_msg 0 ;;
 92                1) log_end_msg 1 ;; # Old process is still running
 93                *) log_end_msg 1 ;; # Failed to start
 94            esac
 95            ;;
 96          *)
 97            # Failed to stop
 98            log_end_msg 1
 99            ;;
100        esac
101        ;;
102      *)
103        echo "Usage: $SCRIPTNAME {start|stop|status|restart| force-reload}" >&2
104        exit 3
105        ;;
106    esac

保存并关闭文件。

选择可执行的脚本,启动服务,并在启动时启用它:

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

客户端配置

现在,服务器正在运行,您已经准备好配置您的电子邮件客户端。 使用您的电子邮件客户端的手动选项创建一个新帐户。 IMAP 和 SMTP 服务器将是您的 dropplet 的域名或 IP 地址,取决于您在您的 SSL 证书上使用的共同名称。 IMAP 和 SMTP 的用户名将是您的电子邮件地址,而不是域名。 例如: 您的电子邮件是 [email protected],所以您的用户名是 bob。 请确保 IMAP 和 SMTP 都设置为使用 SSL/TLS 而不是 STARTTLS。

您将收到电子邮件客户端的警告,因为您正在使用自签证书. 在这种情况下,接受证书是安全的,因为您是创建证书的人。

Thunderbird、Mac OSX 和 iOS 的具体说明可在 DavMail 的网站找到。

您现在应该能够使用您的 Microsoft Exchange 电子邮件帐户使用开放技术发送/接收电子邮件!

Published At
Categories with 技术
comments powered by Disqus