严格来说这篇已经不是关于邮件服务器了。但是算周边吧。
Carddav
毕竟邮件是用来和人联系的,那么就需要通讯录,而通讯录那就需要同步了。所以要搭建carddav服务器。选用的是owncloud。因为简单。其实选择不多的,除了apple的那个darwin的移植版差不多就只是davical和sabredav了,davical需要Postgres,而且davical和sabredav都只是后端而已,添加通讯录之类的需要直接操作数据库,相当麻烦,所以还是用owncloud省心。
安装很简单了,aur里直接有。但是因为nginx不直接支持carddav服务器,所以需要特别设置。参考
location / {
try_files $uri $uri/ @webdav;
}
# owncloud WebDAV
location @webdav {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
include fastcgi_params;
}
其余的和php服务器一样。然后开启php的zip和gd extension,访问owncloud页面就行了。但是owncloud提供的通讯录的carddav地址还是无法使用,必须用
https://abc.com/apps/contacts/carddav.php/
https://abc.com/apps/contacts/carddav.php/addressbooks/username/addressbookname/
这样的格式。在kde中添加webdav地址的话用第一种就行,会自动搜索出通讯录的地址,而如果是在android上使用carddav sync beta的话需要用第二种格式,这样是指定到特定的通讯录。在roundcubemail中也能使用carddav插件来同步carddav通讯录,同样是用的第二种格式的地址。
Caldav
owncloud除了carddav,也有caldav服务,地址是
https://abc.com/apps/calendar/caldav.php/
但是在owncloud的web界面中只能看到VEVENT,也就是日历条目,而不能使用VTODO,也就是todo条目。而在kde中korganizer是可以使用todo的,所以在korganizer中添加的todo在owncloud的web界面中是无法查看的,但确实是已经同步到服务器了。只不过在android上并没有能支持caldav的todo应用,所以仍然只能做到日历的同步。
vps优化
因为vps资源有限,所以稍微优化一下。
#针对单个客户端的连接数做一些限制,但是连接数不能太小,k9mail能同时产生10多个连接,所以设置30比较保险。
smtpd_client_connection_count_limit = 30
#针对单个客户端的连接速度限制,时间长度是60s。
smtpd_client_connection_rate_limit = 100
#针对单个客户端的发送邮件速度限制,时间长度是60s,防止发送spam
smtpd_client_message_rate_limit = 30
#针对单个客户端的发送邮件的收件人数目限制,时间长度是60s,防止发送spam
smtpd_client_recipient_rate_limit = 100
#针对单个客户端新建tls连接的次数,时间长度是60s,因为还有缓存的tls连接,所以这里不需要太大。
smtpd_client_new_tls_session_rate_limit = 10
#限制postfix的process数,自己用的话不需要太多,默认100太大了。
default_process_limit = 20