本文覆盖了Xavier和Drew的文章里所描述的所有功能,除了3个地方Drew有而我没有:邮件推送支持(我喜欢由我主动检查邮件,而其他时候都不会被打扰),邮件全文检索(我一直都没用过),以及使用加密方式存储邮件(我的邮件和数据还没那么重要到要把它们加密后再存到本地服务器上)。如果你需要这些功能,只需要按照Drew的文章里相应部分的说明做就好了,和本文的内容兼容。
和Xavier和Drew的成果比起来,本文有下面几个主要改进:
根据我自己按Drew文章操作的经验以及原文的大量回复,修改了一些问题和文字错误。我也把本文所介绍的内容仔细检查了几遍,从头开始设定了几次服务器做重复验证以确保能正常工作。
低维护:和Xavier的方式比起来,本文增加了在服务器上支持多个邮件域名。这样做是为了尽可能地减少服务器维护工作:基本上,要添加一个域名或用户,只需要往mysql数据库表里增加一行就好了(不需要增加过滤脚本,等等)。
我增加了webmail。
我增加了设定云服务器的部分,不仅能收发邮件还能管理文件,地址本/联系人(邮件地址,电话号码,生日,等等等),日程表和图片,供所有设备访问使用。
申请一个虚拟私人服务器,一个域名,并把它们配置好让我们从设置基础设施开始:我们的虚拟私人主机和我们的域名。
我用过1984.is和Linode提供的虚拟私人主机(VPS),体验非常好。在本文中,我们将使用Debian Wheezy,这个在1984和Linode都提供了已经做好的映像文件可以直接布置到你的VPS上。我喜欢1984是因为它的服务器在冰岛,也是唯一使用可再生能源(地热和水力发电)的地方,目前还没有影响过气候变化,不像大多数美国数据中心目前大多数依赖于烧煤的火力发电站。而且,他们注重民权,透明,自由以及免费软件。
最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号、邮件账号、云帐号、数据库帐号)。当然最好是加密一下(可以用GnuPG),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。
关于注册域名,我已经使用grandi的服务超过10年了,也很满意。在本文中,我们将开辟一个叫linuxidc.net的域名。然后在上面增加一个叫cloud.linuxidc.net的二级域名,并绑定MX纪录。在完成之后,设置比较短的纪录生存时间(TTL)比如300秒,这样你在设置服务器的时候,可以修改你的域并很快测试到结果。
最后,设置PTR纪录(反向DNS),这样IP地址可以反向映射回它的域名。如果你不理解前面这句话,看下这篇文章来获得相关背景知识。如果你使用Linode的服务,你可以在远程访问这一栏的控制面板里设置PTR纪录。如果是1984,联系一下技术支持来帮你搞定。
在服务器上,我们从添加一个普通用户开始,这样我们不用从头到尾一直用root账号。另外,用root登陆也需要额外多一层安全措施。
adduser roudy
然后,在文件/etc/ssh/sshd_config中设置:
PermitRootLoginno
然后重启ssh服务:
service ssh reload
然后,我们要修改服务器的主机名。编辑文件/etc/hostname,只有一行就是自己的主机名,我们这个例子中是:
cloud
然后,编辑ssh服务的公钥文件/etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ecdsa_key.pub,这样文件末尾可以反映你的主机名,比如root@cloud。然后重启系统保证主机名在系统的每个需要它的角落都生效了。
reboot
我们将更新系统并移除不必要的服务以降低远程攻击的风险。
apt-get update
apt-get dist-upgrade
service exim4 stop
apt-get remove exim4 rpcbind