如何在Debian7VPS上设置DavMailExchange网关
介绍
如果您的工作场所或学校将 Microsoft Exchange 用于电子邮件,您可能希望从不支持 Exchange 协议的电子邮件客户端访问您的 Exchange 电子邮件帐户。
DavMail 提供了一种解决方案,将 Microsoft Exchange 转换为开放协议,如 POP、IMAP、SMTP、Caldav、Carddav 和 LDAP。
安装
Davmail 需要一些额外的依赖才能正常工作。 使用 apt 安装它们:
sudo apt-get install default-jre libswt-gtk-3-java libswt-cairo-gtk-3-jni
DavMail 项目通过 [SourceForge (http://sourceforge.net/projects/davmail/files/davmail/) 在他们的网站上提供 Debian 软件包。
使用 wget 下载最新的 Debian 软件包:
wget http://sourceforge.net/projects/davmail/files/davmail/4.4.1/davmail_4.4.1-2225-1_all.deb
然后,使用 dpkg 安装 DavMail:
sudo dpkg -i davmail_4.4.1-2225-1_all.deb
基本配置
DavMail 的配置文件默认不存在。 使用您最喜欢的文本编辑器创建一个:
sudo nano /etc/davmail.properties
将 DavMail 设置为服务器模式,这样就不需要 X11:
davmail.server=true
启用远程模式并将绑定地址设置为您的 Droplet 的 IP 地址或将其设置为空白:
davmail.allowRemote=true davmail.bindAddress=
将 davmail.url 设置为您的 Outlook Web App/Outlook Web Access URL,通常以 /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 加密,您将需要 PEM 格式的 SSL 证书和 SSL 私钥。 如果您从证书颁发机构购买了证书,那么您应该已经拥有证书和密钥。 如果是这样,请继续下面的配置 SSL 部分。 否则,您可以按照以下步骤生成自签名证书。
使用 OpenSSL 生成 RSA 密钥:
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,它应该设置为您的电子邮件客户端将访问的 Droplet 的域名或 IP 地址(例如 davmail.mydomain.com 或 123.123.123.123)。 其他字段可以通过按回车键保留默认值,也可以填写任何内容:
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
现在您有了 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 软件包不包含初始化脚本,所以我们必须创建自己的。
使用您喜欢的文本编辑器创建一个新文件:
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
客户端配置
现在服务器正在运行,您已准备好配置您的电子邮件客户端。 使用电子邮件客户端的“手动”选项创建一个新帐户。 IMAP 和 SMTP 服务器都将是您的 Droplet 的域名或 IP 地址,具体取决于您在 SSL 证书上用于公用名的内容。 IMAP 和 SMTP 的用户名都是您的电子邮件地址,没有域名。 示例:您的电子邮件是 bob@yourcompany.com,因此您的用户名是 bob。 确保 IMAP 和 SMTP 都设置为使用 SSL/TLS 而不是 STARTTLS。
由于您使用的是自签名证书,您将收到来自您的电子邮件客户端的警告。 在这种情况下接受证书是安全的,因为您是创建它的人。
关于 Thunderbird、Mac OSX 和 iOS 的具体说明可在 DavMail 的网站 上找到。
您现在应该能够使用开放技术使用您的 Microsoft Exchange 电子邮件帐户发送/接收电子邮件!