PUB:20150115 Get back your privacy and control

@zpl1025 鸿篇巨制!辛苦啦,翻译得非常好~~
This commit is contained in:
wxy 2015-03-25 22:15:51 +08:00
parent c978a33575
commit ca951ee6a2

View File

@ -1,42 +1,42 @@
在短短几个小时里拿回自己数据的隐私和控制权:为自己和朋友们搭建私有云
权威指南:构建个人私有云,拿回你的数据隐私的控制权!
================================================================================
8年里40'000多次搜索这是我的Google搜索历史。你的呢可以在[这里][1]自己找一下有经过这么长时间积累下来的这么多数据点Google已经能非常精确的推测你对什么感兴趣曾经的想法担忧过的事情以及从你第一次获得Google帐号后这些年里所有这些的变化。
8年里40000多次搜索这是我的Google搜索历史。你的呢可以在[这里][1]自己找一下有经过这么长时间积累下来的这么多数据点Google已经能非常精确的推测你对什么感兴趣、曾经的想法、担忧过的事情以及从你第一次获得Google帐号后这些年里所有这些的变化
### 很多非常私人的信息不受自己控制地存储在世界范围内的服务器上 ###
## 很多非常私人的信息不受自己控制地存储在世界范围内的服务器上 ##
比如说你也像我一样从2006年到2013年都是Gmail用户意味着你收到了30'000+的电子邮件以及在这7年里写了差不多5000封电子邮件。这些发送或收到的电子邮件里有很多是非常私人的私人到你甚至不希望自己的家人或好友系统地查看。也许你还写过一些草稿邮件因为最后一分钟改变主意而从没发出去。但是尽管你从未发出去这些邮件仍然保存在服务器上的某个地方。结论是说Google服务器比你最亲密的朋友或家人都更了解你的个人生活一点也不过分。
比如说你也像我一样从2006年到2013年都是Gmail用户意味着你收到了30000封以上的电子邮件以及在这7年里写了差不多5000封电子邮件。这些发送或收到的电子邮件里有很多是非常私人的私人到你甚至不希望自己的家人或好友可以系统地查看。也许你还写过一些草稿邮件因为最后一分钟改变主意而从没发出去。但是尽管你从未发出去这些邮件仍然保存在服务器上的某个地方。结论是说Google服务器比你最亲密的朋友或家人都更了解你的个人生活一点也不过分。
从统计数据来看,可以很安全地赌你拥有一部智能手机。如果不使用联系人应用的话手机将基本没法用而它默认会将你的联系人信息保存到Google服务器上的Google联系人里。所以现在Google不仅知道了你的电子邮件还有了你的离线联系人你喜欢打给谁,谁来过电话,你发过短信给谁以及发了些什么。你也不需要听我的片面之词可以自己检查一下看看你开放给类似Google Play服务的一些应用的权限用来读取来电信息以及收到的短信。你是否还会用到手机里自带的日历应用除非你在设置日程的时候明确地去掉那么Google将精确地知道你将要做什么一天里的每个时段,每一天,每一年。用iPhone代替Android手机也是一样的只是Apple会代替Google来掌握你的往来邮件联系人和日程计划。
从统计数据来看,我可以很保险地打赌你拥有一部智能手机。如果不使用联系人应用的话手机将基本没法用而它默认会将你的联系人信息保存到Google服务器上的Google联系人里。所以现在Google不仅知道了你的电子邮件还有了你的离线联系人你喜欢打给谁、谁来过电话、你发过短信给谁以及发了些什么。你也不需要听我的片面之词可以自己检查一下看看你开放给类似Google Play服务的一些应用的权限用来读取来电信息以及收到的短信。你是否还会用到手机里自带的日历应用除非你在设置日程的时候明确地去掉同步那么Google将精确地知道你将要做什么一天里的每个时段、每一天、每一年。用iPhone代替Android手机也是一样的只是Apple会代替Google来掌握你的往来邮件联系人和日程计划。
你是否还会非常小心地同步自己的联系人信息在你朋友同事或家人换工作或换服务商的时候更新他们的电子邮件地址和手机号这给Google提供了一副你社交网络的非常精确的,最新的图片。还有你非常喜欢手机的GPS功能经常配合Google地图使用。这意味着Google不仅能从日程里知道你在干什么还知道你在哪儿住在哪儿在哪儿工作。然后再关联用户之间的GPS位置信息GOogle还能知道你现在可能正在和哪些人来往。
你是否还会非常小心地同步自己的联系人信息在你朋友同事或家人换工作或换服务商的时候更新他们的电子邮件地址和手机号这给Google提供了一副你的社交网络的非常精确的、最新的描绘。还有你非常喜欢手机的GPS功能经常配合Google地图使用。这意味着Google不仅能从日程里知道你在干什么还知道你在哪儿、住在哪儿、在哪儿工作。然后再关联用户之间的GPS位置信息Google还能知道你现在可能正在和哪些人来往。
### 这种泄漏自己私人信息的日常爱好会以一种甚至没人能够预测的方式影响你的生活 ###
## 这种泄漏自己私人信息的日常爱好会以一种甚至没人能够预测的方式影响你的生活 ##
总结一下如果你是一个普通的因特网用户Google拥有过去差不多10年里你最新的,深度的信息,关于你的兴趣,忧虑,热情,疑问。它还收集了一些你很私人的信息(电子邮件,短信),精确到小时的你的日常活动和位置,一副你社交网络的高品质图片。关于你的如此私密的数据,很可能已经超越了你最亲密的朋友,家人或爱人对你的了解。
总结一下如果你是一个普通的因特网用户Google拥有过去差不多10年里你最新的、深度的信息,关于你的兴趣、忧虑、热情、疑问。它还收集了一些你很私人的信息(电子邮件、短信),精确到小时的你的日常活动和位置,一副你社交网络的高精度的描绘。关于你的如此私密的数据,很可能已经超越了你最亲密的朋友,家人或爱人对你的了解。
不敢想象把这些深度的个人信息交给完全陌生的人就好像把这些信息拷到一个U盘里然后随便放到某个咖啡厅的桌上留张纸条说“Olivier Martin的个人数据请随便”。谁知道什么人会拿到它以及用来干嘛然而我们毫不犹豫地把自己的主要信息交给那些对我们的数据很感兴趣的IT公司的陌生人这是他们制造面包的材料以及[世界级的数据分析专家][2]手里,也许只是因为我们在点击那个绿色的'接受'按钮时根本没有想这么多。
有这么多的高质量信息这么多年里Google可能会比你希望自我了解的更了解你自己尼玛回想我过去的数字生活我已经不记得5年前发出的邮件里的一半了。我很高兴能重新发现早在2005年对马克思主义的兴趣以及第二年加入了[ATTAC][3]一个致力于通过征收金融交易税来限制投机和改善社会公平的组织。天知道为什么我竟然在2007年这么喜欢跳舞。这些都是无关紧要的信息你不要指望我能爆出什么猛料,不会吧?;-)。但是,连接起这些高质量数据点,关于你生活的方方面面(做什么,什么时候,和谁一起,在哪里,...并跨越这么长时间间隔应该能推测出你的未来状态。比如说根据一个17岁女孩的购物习惯超市甚至可以在他父亲听说之前断定这个女孩怀孕了[真实故事][4]。谁知道通过像Google所掌握的这些远远超出购物习惯的高质量数据能做些什么连接起这些点也许有人能预测你未来几年里口味或政治观点的变化。如今,[你从未听过的公司声称拥有你500项数据点][5],包括宗教信仰性取向和政治观点。提到政治如果说你决定今后10年内进入政坛会怎么样你的生活会改变你的观点也一样甚至你有时候会有所遗忘但是Google不会。那你会不会担心你的对手会接触一些可以从Google访问你数据的人并会从你过去这些年里积累的个人数据深渊里挖出一些猛料呢[就像最近Sony被黑][6]一样多久以后会轮到Google或Facebook以致让你的个人信息最终永远暴露
有这么多的高质量信息这么多年里Google可能会比你希望自我了解的更了解你自己尼玛回想我过去的数字生活5年前发出的邮件里有一半我已经不记得了。我很高兴能重新发现早在2005年对xxx主义的兴趣以及第二年加入了[ATTAC][3]一个致力于通过征收金融交易税来限制投机和改善社会公平的组织。天知道为什么我竟然在2007年这么喜欢跳舞。这些都是无关紧要的信息你不指望我能爆出什么猛料,是吧?;-)。但是,连接起这些高质量数据点,关于你生活的方方面面(做什么、什么时候、和谁一起、在哪里,...并跨越这么长时间间隔应该能推测出你的未来状态。比如说根据一个17岁女孩的购物习惯超市甚至可以在他父亲听说之前断定这个女孩怀孕了这是一个[真实故事][4]。谁知道通过像Google所掌握的这些远远超出购物习惯的高质量数据能做些什么连接起这些点也许有人能预测你未来几年里口味或观点的变化。如今[你从未听过的公司声称拥有你500项数据点][5],包括宗教信仰性取向和政治观点。提到政治如果说你决定今后10年内进入政坛会怎么样你的生活会改变你的观点也一样甚至你有时候会有所遗忘但是Google不会。那你会不会担心你的对手会接触一些可以从Google访问你数据的人并会从你过去这些年里积累的个人数据深渊里挖出一些猛料呢[就像最近Sony被黑][6]一样多久以后会轮到Google或Facebook以致让你的个人信息最终永远暴露
我们大多数人把自己的个人数据托付给这些公司的一个原因就是它们提供免费服务。但是真的免费吗一般的Google帐号的价值根据评估方式不同会有些差别你花在写邮件上的时间占到[1000美元/年][7],你的帐号对于广告产业的价值差不多在[220美元/年][8]到[500美元/年][9]之间。所以这些服务并不是真的免费:会通过广告和我们的数据在未来的一些未知使用来间接付费。
我写的最多的是Google这是因为这是我托付个人数字信息的以及目前我所知道做的最好的公司。但是我也提到过Apple或Facebook。这些公司通过它们在设计工程和我们(曾经)喜欢每天使用的服务方面的神奇进步实实在在地改变了世界。但是这并不是说我们应该把所有我们最私人的个人数据堆积到它们的服务器上并把我们的数字生活托付给它们:潜在的危害实在太大了。
我写的最多的是Google这是因为这是我托付个人数字信息的以及目前我所知道做的最好的公司。但是我也提到过Apple或Facebook。这些公司通过它们在设计工程和我们(曾经)喜欢每天使用的服务方面的神奇进步实实在在地改变了世界。但是这并不是说我们应该把所有我们最私人的个人数据堆积到它们的服务器上并把我们的数字生活托付给它们:潜在的危害实在太大了。
### 只要5小时拿回自己以及关心的人的隐私权 ###
## 只要5小时拿回自己以及关心的人的隐私权 ##
并不是一定要这样做。你可以生活在21世纪拿着智能手机每天都用电子邮件和GPS却仍然可以保留自己的隐私。你所需要的就是拿回自己个人数据的控制权邮件、日程、联系人、文件等等。[Prism-Break.org][10]网站上列出了一些能帮你掌握个人数据命运的软件。除此以外,控制自己个人数据的最安全和最有效的方式是架设自己的服务器并搭建自己的云。不过你也许只是没有时间或精力去研究具体该怎么做以及如何让它能流畅工作。
但是事实并不是一定必须这样的。你可以生活在21世纪拿着智能手机每天都用电子邮件和GPS却仍然可以保留自己的隐私。你所需要的就是拿回自己个人数据的控制权邮件、日程、联系人、文件等等。[Prism-Break.org][10]网站上列出了一些能帮你掌握个人数据命运的软件。除此以外,控制自己个人数据的最安全和最有效的方式是架设自己的服务器并搭建自己的云。不过你也许只是没有时间或精力去研究具体该怎么做以及如何让它能流畅工作。
这也是这篇文章的意义所在。仅仅5个小时内我们将配置出一台服务器来支撑你的邮件、联系人、日程表和各种文件为你、你的朋友和你的家人。这个服务器将设计成一个个人数据中心或云所以你能时刻保留它的完整控制。数据将自动在你的台式机/笔记本、手机和平板之间同步。从根本上来说,**我们将建立一个系统来代替Gmail、Google文件/Dropbox、Google联系人、Google日历和Picasa**。
为自己做这件事情已经是迈出很大一步了。但是你个人信息的很大一部分将仍然泄漏出去并保存到硅谷的一些主机上只是因为和你日常来往的太多人在用Gmail和使用智能手机所以最好是带上你一些比较亲近的人加入这次探险。
为自己做这件事情已经是迈出很大一步了。但是你个人信息的很大一部分将仍然泄漏出去并保存到硅谷的一些主机上只是因为和你日常来往的太多人在用Gmail和使用智能手机所以最好是带上你一些比较亲近的人加入这次探险。
我们将构建的系统能够
我们将构建的系统能够
- **支持任意数目的域名和用户**。这样就能轻易地和你的家人朋友共享这台服务器,所以他们也能掌控自己的个人数据,并且还能和你一起分摊服务费用。和你一起共享服务器的人可以使用他们自己的域名或者共享你的。
- **允许你从任意网络发送和接收电子邮件**,需要成功登录服务器之后。这样,你可以通过任意的邮件地址,任意设备(台式机、手机、平板),任意网络(家里、公司、公共网络、...)来发送电子邮件。
- **允许你从任意网络发送和接收电子邮件**,需要成功登录服务器之后。这样,你可以通过任意的邮件地址、任意设备(台式机、手机、平板)、任意网络(家里、公司、公共网络、...)来发送电子邮件。
- **在发送和接收邮件的时候加密网络数据**,这样,你不信任的人不能钓出你的密码,也不能看到你的私人邮件。
- **提供最先进的反垃圾邮件技术**,结合了已知垃圾邮件黑名单,自动灰名单,和自适应垃圾邮件过滤。如果邮件被误判了只需要简单地把它拖入或拖出垃圾目录就可以重新配置垃圾邮件过滤器。而且,服务器还会为基于社区的反垃圾邮件努力做出贡献。
- **一段时间里只需要几分钟的维护**基本上只是安装安全更新和简单地检查一下服务器日志。添加一个新的邮件地址只需要在数据库中插入一条记录。除此之外你可以忘记它的存在过自己的生活。我在14个月之前搭建了本文描述的这个系统从那以后就一直顺利运行。所以我完全把它给忘了直到我最近觉得随便按下手机上的检查邮件会导致电子一路跑到冰岛我放置服务器的地方再回来的想法有点好笑才想起来。
- **提供最先进的反垃圾邮件技术**,结合了已知垃圾邮件黑名单、自动灰名单、和自适应垃圾邮件过滤。如果邮件被误判了只需要简单地把它拖入或拖出垃圾目录就可以重新调校垃圾邮件过滤器。而且,服务器还会为基于社区的反垃圾邮件努力做出贡献。
- **一段时间里只需要几分钟的维护**基本上只是安装安全更新和简单地检查一下服务器日志。添加一个新的邮件地址只需要在数据库中插入一条记录。除此之外你可以忘记它的存在过自己的生活。我在14个月之前搭建了本文描述的这个系统从那以后就一直顺利运行。所以我完全把它给忘了直到我最近觉得随便按下手机上的检查邮件会导致电子信号一路跑到冰岛(我放置服务器的地方)再回来的想法有点好笑才想起来。
要完成这篇文章里的工作你需要一点基本的技术能力。如果你知道SMTP和IMAP的区别什么是DNS以及对TCP/IP有基本了解的话就够了。你还将需要一点基本的Unix知识在命令行下和文件一起工作基本的系统管理。然后你需要花总共5小时时间来搭建。
@ -49,7 +49,7 @@
- [使用Owncloud提供日历联系人文件服务并配置webmail][15]
- [在云上同步你的设备][16]
### 这篇文章是受之前工作的启发并以之为基础 ###
## 这篇文章是受之前工作的启发并以之为基础 ##
本文很大程度参考了两篇文章,由[Xavier Claude][17]和[Drew Crawford][18]写的关于架设私有邮件服务器的介绍。
@ -62,13 +62,13 @@
- 我增加了webmail。
- 我增加了设定云服务器的部分,不仅能收发邮件还能管理文件,地址本/联系人(邮件地址,电话号码,生日,等等等),日程表和图片,供所有设备访问使用。
### 申请一个虚拟私人服务器,一个域名,并把它们配置好 ###
## 申请一个虚拟私人服务器,一个域名,并把它们配置好 ##
让我们从设置基础设施开始:我们的虚拟私人主机和我们的域名。
我用过[1984.is][19]和[Linode][20]提供的虚拟私人主机VPS体验非常好。在本文中我们将使用**Debian Wheezy**这个在1984和Linode都提供了已经做好的映像文件可以直接布置到你的VPS上。我喜欢1984是因为它的服务器在冰岛也是唯一使用可再生能源地热和水力发电的地方目前还没有影响过气候变化不像[大多数美国数据中心目前大多数依赖于烧煤的火力发电站][21]。而且,他们注重[民权,透明,自由][22]以及[免费软件][23]。
最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号,邮件账号,云帐号,数据库帐号)。当然最好是加密一下(可以用[GnuPG][24]),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。
最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号、邮件账号、云帐号、数据库帐号)。当然最好是加密一下(可以用[GnuPG][24]),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。
关于注册域名,我已经使用[grandi][25]的服务超过10年了也很满意。在本文中我们将开辟一个叫**jhausse.net**的域名。然后在上面增加一个叫**cloud.jhausse.net**的二级域名并绑定MX纪录。在完成之后设置比较短的纪录生存时间TTL比如300秒这样你在设置服务器的时候可以修改你的域并很快测试到结果。
@ -78,7 +78,7 @@
adduser roudy
然后,在文件**/etc/ssh/sshd_config**中设置
然后,在文件**/etc/ssh/sshd\_config**中设置
PermitRootLogin no
@ -90,7 +90,7 @@
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**。然后重启系统保证主机名在系统的每个需要它的角落都生效了。
然后编辑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
@ -103,15 +103,15 @@
apt-get autoremove
apt-get install vim
我喜欢使用vim远程编辑配置文件。打开自动语法高亮会很有帮助。添加下面这一行到**~/.vimrc**文件中。
我喜欢使用vim远程编辑配置文件。打开vim 的自动语法高亮会很有帮助。添加下面这一行到**~/.vimrc**文件中。
syn on
### 设置postfix和dovecot来收发电子邮件 ###
## 设置postfix和dovecot来收发电子邮件 ##
apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd postgrey
在[Postfix][27]的配置菜单里,选择**因特网站点**,把系统邮件名设为**jhausse.net**。
在[Postfix][27]的配置菜单里,选择`Internet Site`,设置这个系统的邮件名称为**jhausse.net**。
现在开始添加一个数据库用于保存主机上管理的域名列表,和每个域名下的用户列表(同时也包括他们各自的密码),以及邮件别名列表(用于从一个地址往另一个地址转发邮件)。
@ -142,14 +142,14 @@
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我们将承载**jhausse.net**域名。如果还需要加入其他域名,也没问题。我们也会为每个域名设置一个邮件管理地址,转寄给**roudy@jhausse.net**。
这里我们为**jhausse.net**域名提供邮件服务。如果还需要加入其他域名,也没问题。我们也会为每个域名设置一个邮件管理地址postmaster,转寄给**roudy@jhausse.net**。
mysql> INSERT INTO virtual_domains (`name`) VALUES ('jhausse.net');
mysql> INSERT INTO virtual_domains (`name`) VALUES ('otherdomain.net');
mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('1', 'postmaster', 'roudy@jhausse.net');
mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('2', 'postmaster', 'roudy@jhausse.net');
现在已经添加了一个本地邮件账号**roudy@jhausse.net**。首先,为它生成一个哈希密码:
现在已经添加了一个本地邮件账号**roudy@jhausse.net**。首先,为它生成一个密码的哈希串
doveadm pw -s SHA512-CRYPT
@ -157,7 +157,7 @@
mysql> INSERT INTO `mailserver`.`virtual_users` (`domain_id`, `password`, `email`) VALUES ('1', '$6$YOURPASSWORDHASH', 'roudy@jhausse.net');
现在我们的域名别名和用户列表都设置好了然后开始设置postfixSMTP服务器用来发送邮件。把文件**/etc/postfix/main.cf**替换为下面的内容:
现在我们的域名别名和用户列表都设置好了然后开始设置postfix这是一个SMTP服务器用来发送邮件。把文件**/etc/postfix/main.cf**替换为下面的内容:
myhostname = cloud.jhausse.net
myorigin = /etc/mailname
@ -239,7 +239,7 @@
如果一切都正常配置了的话头两个查询应该输出1第3个查询应该输出**roudy@jhausse.net**,而最后一个应该什么都不输出。
现在让我们设置一下dovecot一个IMAP服务程序用来在我们的设备上从服务器获取收件箱里的邮件)。编辑文件**/etc/dovecot/dovecot.conf**设置以下参数:
现在让我们设置一下dovecot一个IMAP服务程序用来在我们的设备上从服务器获取收的邮件)。编辑文件**/etc/dovecot/dovecot.conf**设置以下参数:
# Enable installed protocol
# !include_try /usr/share/dovecot/protocols.d/*.protocol
@ -253,7 +253,7 @@
[...]
first_valid_uid = 0
这样邮件将被保存到目录/var/mail/domainname/username下。注意下这几个选项散布在配置文件的不同位置有时已经在那里写好了我们只需要取消注释。文件里的其他设定选项可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件**/etc/dovecot/conf.d/10-auth.conf**里,设置以下参数:
这样邮件将被保存到目录 /var/mail/domainname/username 下。注意下这几个选项散布在配置文件的不同位置,有时已经在那里写好了:我们只需要取消注释即可。文件里的其他设定选项,可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件**/etc/dovecot/conf.d/10-auth.conf**里,设置以下参数:
disable_plaintext_auth = yes
auth_mechanisms = plain
@ -366,9 +366,10 @@
在服务器上,尝试发送邮件给本地用户:
telnet localhost 25
EHLO cloud.jhausse.net
MAIL FROM:youremail@domain.com
rcpt to:roudy@jhausse.net
RCPT TO:roudy@jhausse.net
data
Subject: Hallo!
@ -397,18 +398,18 @@
554 5.7.1 <bob@gmail.com>: Relay access denied
这个没问题如果服务器能接受这封邮件那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应:
这个没问题:如果服务器能接受这封邮件而不是返回如上的拒绝消息那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应:
554 5.7.1 Service unavailable; Client host [87.68.61.119] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=87.68.61.119
意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商ISP连接服务器时曾收到过这样的消息。要解决这个问题可以试着从另一个主机发起连接比如另外一个你可以SSH登录的主机。另外一种方式是你可以修改postfix的**main.cf**配置文件不要使用Spamhous的RBL重启postfix服务然后再检查上面的测试是否正常。不管用哪种方式最重要的是你要确定一个能工作的因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL别忘了在完成本文后重新开启RBL并重启postfix以避免收到一些不必要的垃圾邮件。
意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商ISP连接服务器时曾收到过这样的消息。要解决这个问题可以试着从另一个主机发起连接比如另外一个你可以SSH登录的主机。另外一种方式是你可以修改postfix的**main.cf**配置文件不要使用Spamhous的RBL重启postfix服务然后再检查上面的测试是否正常。不管用哪种方式最重要的是你要确定一个能工作的因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL别忘了在完成本文后重新开启RBL并重启postfix以避免收到一些不必要的垃圾邮件。LCTT 译者注:在国内可以使用 CASA 的 RBLcblplus.anti-spam.org.cn参见http://www.anti-spam.org.cn/ 。)
现在我们试一下往SMTP端口25发送一封有效的邮件这是一般正常的邮件服务器用来彼此对话的方式
openssl s_client -connect cloud.jhausse.net:25 -starttls smtp
EHLO cloud.jhausse.net
MAIL FROM:youremail@domain.com
rcpt to:roudy@jhausse.net
RCPT TO:roudy@jhausse.net
服务器应该有这样的响应
@ -425,7 +426,7 @@
4 UID fetch 1:1 (UID RFC822.SIZE FLAGS BODY.PEEK[])
5 LOGOUT
这里你应该把mypassword替换为你自己为这个邮件账号设定的密码。如果能正常工作基本上我们已经拥有一个能接收邮件的邮件服务器了通过它我们可以在各种设备PC/笔记本,平板,手机,...上收取邮件了。但是我们不能把邮件给它发送出去除非我们自己从服务器发送。现在我们将让postfix为我们转发邮件但是这个只有成功登录才可以这是为了保证邮件是由服务器上的某个有效帐号发出来的。要做到这个我们要打开一个特殊的全程SSL连接的SASL鉴权的邮件提交服务。在文件**/etc/postfix/master.cf**里设置下面的参数:
这里,你应该把*mypassword*替换为你自己为这个邮件账号设定的密码。如果能正常工作基本上我们已经拥有一个能接收邮件的邮件服务器了通过它我们可以在各种设备PC/笔记本、平板、手机...上收取邮件了。但是我们不能把邮件给它发送出去除非我们自己从服务器发送。现在我们将让postfix为我们转发邮件但是这个只有成功登录才可以这是为了保证邮件是由服务器上的某个有效帐号发出来的。要做到这个我们要打开一个特殊的全程SSL连接的SASL鉴权的邮件提交服务。在文件**/etc/postfix/master.cf**里设置下面的参数:
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
@ -437,7 +438,7 @@
-o smtpd_sasl_security_options=noanonymous
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_non_fqdn_recipient,reject_unauth_destination
然后重启postfix服务
然后重启postfix服务
service postfix reload
@ -446,7 +447,7 @@
openssl s_client -connect cloud.jhausse.net:587 -starttls smtp
EHLO cloud.jhausse.net
注意一下服务器建议的'250-AUTH PLAIN'功能在从端口25连接的时候不会生效
注意一下服务器建议的'250-AUTH PLAIN'功能在从端口25连接的时候不会出现
MAIL FROM:asdf@jkl.net
rcpt to:bob@gmail.com
@ -494,13 +495,13 @@
PS不要忘记再次[试试通过端口25往自己架设的服务器上的帐号发送邮件][29]来验证你已经没有被postgrey阻挡了。
### 阻止垃圾邮件进入你的收件箱 ###
## 阻止垃圾邮件进入你的收件箱 ##
为了过滤垃圾邮件我们已经使用了实时黑名单RBLs和灰名单postgrey。现在我们将增加自适应垃圾邮件过滤来让我们的垃圾邮件过滤能力提高一个等级。这意味着我们将为我们的邮件服务器增加人工智能这样它就能从经验中学习哪些件是垃圾哪些不是。我们将使用[dspam][30]来实现这个功能。
为了过滤垃圾邮件我们已经使用了实时黑名单RBL和灰名单postgrey。现在我们将增加自适应垃圾邮件过滤来让我们的垃圾邮件过滤能力提高一个等级。这意味着我们将为我们的邮件服务器增加人工智能这样它就能从经验中学习哪些件是垃圾哪些不是。我们将使用[dspam][30]来实现这个功能。
apt-get install dspam dovecot-antispam postfix-pcre dovecot-sieve
dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误分类了之后让dovecot重新更新垃圾邮件过滤器。基本上我们所需要做的就只是把邮件放进或拿出垃圾箱。dovecot-antispam将负责调用dspam来更新过滤器。至于postfix-pcre和dovecot-sieve我们将分别用它们来把接收的邮件递给垃圾邮件过滤器以及自动把垃圾邮件放入用户的垃圾箱。
dovecot-antispam是一个安装包可以在我们发现有邮件被dspam误分类了之后让dovecot重新更新垃圾邮件过滤器。基本上我们所需要做的就只是把邮件放进或拿出垃圾箱。dovecot-antispam将负责调用dspam来更新过滤器。至于postfix-pcre和dovecot-sieve我们将分别用它们来把接收的邮件递给垃圾邮件过滤器以及自动把垃圾邮件放入用户的垃圾箱。
在配置文件**/etc/dspam/dspam.conf**里,为以下参数设置相应的值:
@ -535,7 +536,7 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
现在我们将告诉postfix通过dspam来过滤所有提交给服务器端口25一般的SMTP通信的新邮件除非该邮件是从服务器本身发出permit_mynetworks。注意下我们通过SASL鉴权提交给postfix的邮件不会通过dspam过滤因为我们在前面部分里为这种方式设定了独立的提交服务。编辑文件**/etc/postfix/main.cf**将选项**smtpd_client_restrictions**改为如下内容:
现在我们将告诉postfix通过dspam来过滤所有提交给服务器端口25一般的SMTP通信的新邮件除非该邮件是从服务器本身发出permit\_mynetworks。注意下我们通过SASL鉴权提交给postfix的邮件不会通过dspam过滤因为我们在前面部分里为这种方式设定了独立的提交服务。编辑文件**/etc/postfix/main.cf**将选项**smtpd\_client\_restrictions**改为如下内容:
smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, check_client_access pcre:/etc/postfix/dspam_filter_access
@ -544,11 +545,11 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
# For DSPAM, only scan one mail at a time
dspam_destination_recipient_limit = 1
现在我们需要指定我们定义的过滤器。基本上我们将告诉postfix把所有邮件/./通过unix套接字发给dspam。创建一个新文件**/etc/postfix/dspam_filter_access**并把下面一行写进去:
现在我们需要指定我们定义的过滤器。基本上我们将告诉postfix把所有邮件如下用 /./ 代表通过unix套接字发给dspam。创建一个新文件**/etc/postfix/dspam\_filter\_access**并把下面一行写进去:
/./ FILTER dspam:unix:/run/dspam/dspam.sock
这是postfix部分的配置。现在让我们为dovecot设置垃圾过滤。在文件**/etc/dovecot/conf.d/20-imap.conf**里,修改**imap mail_plugin**插件参数为下面的方式:
这是postfix部分的配置。现在让我们为dovecot设置垃圾过滤。在文件**/etc/dovecot/conf.d/20-imap.conf**里,修改**imap mail\_plugin**插件参数为下面的方式:
mail_plugins = $mail_plugins antispam
@ -581,7 +582,7 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
sieve_default = /etc/dovecot/default.sieve
什么是sieve以及为什么我们需要为所有用户设置一个默认脚本sieve可以在IMAP服务器上为我们自动处理任务。在我们的例子里我们想让所有被确定为垃圾的邮件会被移到垃圾箱而不是收件箱里。我们希望这是服务器上所有用户的默认行为;这是为什么我们把这个脚本设为默认脚本。现在让我们来创建这个脚本,建立一个新文件**/etc/dovecot/default.sieve**并写入以下内容:
什么是sieve以及为什么我们需要为所有用户设置一个默认脚本sieve可以在IMAP服务器上为我们自动处理任务。在我们的例子里我们想让所有被确定为垃圾的邮件移到垃圾箱而不是收件箱里。我们希望这是服务器上所有用户的默认行为这是为什么我们把这个脚本设为默认脚本。现在让我们来创建这个脚本建立一个新文件**/etc/dovecot/default.sieve**并写入以下内容:
require ["regex", "fileinto", "imap4flags"];
# Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox
@ -603,7 +604,7 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
chmod 0640 default.sieve
chmod 0750 default.svbin
最后我们需要修改dspam要读取的两个postfix配置文件的权限
最后我们需要修改dspam要读取的两个postfix配置文件的权限
chmod 0644 /etc/postfix/dynamicmaps.cf /etc/postfix/main.cf
@ -669,21 +670,21 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
很好!你现在已经为你服务器上的用户配置好自适应垃圾邮件过滤。当然,每个用户将需要在开始的几周里培训过滤器。要标记一则信息为垃圾,只需要在你的任意设备(电脑,平板,手机)上将它移动到叫“垃圾箱”或“废纸篓”的目录里。否则它将被标记为有用。
### 确保你发出的邮件能通过垃圾邮件过滤器 ###
## 确保你发出的邮件能通过垃圾邮件过滤器 ##
这个部分我们的目标是让我们的邮件服务器能尽量干净地出现在世界上,并让垃圾邮件发送者们更难以我们的名义发邮件。作为附加效果,这也有助于让我们的邮件能通过其他邮件服务器的垃圾邮件过滤器。
#### 发送者策略框架 ####
### 发送者策略框架SPF ###
发送者策略框架SPF是你添加到自己服务器区域里的一份记录声明了整个因特网上哪些邮件服务器能以你的域名发邮件。设置非常简单使用[microsoft.com][31]上的SPF向导来生成你的SPF记录然后作为一个TXT记录添加到自己的服务器区域里。看上去像这样
jhausse.net. 300 IN TXT v=spf1 mx mx:cloud.jhausse.net -all
#### 反向PTR ####
### 反向PTR ###
我们[之前][32]在本文里讨论过这个问题建议你为自己的服务器正确地设置反向DNS这样对服务器IP地址的反向查询能返回你服务器的实际名字。
#### OpenDKIM ####
### OpenDKIM ###
当我们激活[OpenDKIM][33]后postfix会用密钥为每封发出去的邮件签名。然后我们将把这个密钥存储在DNS域中。这样的话世界上任意一个邮件服务器都能够检验邮件是否真的是我们发出的或是由垃圾邮件发送者伪造的。让我们先安装opendkim
@ -710,7 +711,7 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
UMask 022
UserID opendkim:opendkim
我们还需要几个额外的文件,保存在目录**/etc/opendkim**里:
我们还需要几个额外的文件,保存在目录**/etc/opendkim**里:
mkdir -pv /etc/opendkim/
cd /etc/opendkim/
@ -740,7 +741,7 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
cat mail.txt
然后把它作为一个TXT记录添加到区域文件里应该是这样的
然后把它作为一个TXT记录添加到区域文件里应该是类似这样的
mail._domainkey.cloud1984.net. 300 IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqG...
@ -751,30 +752,30 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
然后重启相关服务
然后重启相关服务
service postfix reload
service opendkim restart
现在让我们测试一下能找到我们的OpenDKIM公钥并和私钥匹配
现在让我们测试一下是否能找到我们的OpenDKIM公钥并和私钥匹配
opendkim-testkey -d jhausse.net -s mail -k mail.private -vvv
这个应该返回
这个应该返回
opendkim-testkey: key OK
这个你可能需要等一会直到域名服务器重新加载该区域对于Linode每15分钟会更新一次。你可以用**dig**来检查区域是否已经重新加载。
如果这个没问题让我们测试一下其他服务器能验证我们的OpenDKIM签名和SPF记录。要做这个我们可以用[Brandon Checkett的邮件测试][34]。发送一封邮件到[Brandon的网页][34]上提供的测试地址,我们可以在服务器上运行下面的命令
如果这个没问题让我们测试一下其他服务器能验证我们的OpenDKIM签名和SPF记录。要做这个我们可以用[Brandon Checkett的邮件测试系统][34]。发送一封邮件到[Brandon的网页][34]上提供的测试地址,我们可以在服务器上运行下面的命令
mail -s CloudCheck ihAdmTBmUH@www.brandonchecketts.com
在Brandon的网页上我们应该可以在'DKIM Signature'部分里看到**result = pass**的文字,以及在'SPF Information'部分看到**Result: pass**的文字。如果我们的邮件通过这个测试,只要不加-t开关重新生成OpenDKIM密钥上传新的密钥到区域文件里然后重新测试检查是否仍然可以通过这些测试。如果可以的话恭喜你已经在你的服务器上成功配置好OpenDKIM和SPF了
### 使用Owncloud提供日历联系人文件服务并通过Roundcube配置网页邮件 ###
## 使用Owncloud提供日历联系人文件服务并通过Roundcube配置网页邮件 ##
既然我们已经拥有了一流的邮件服务器,让我们再为它增加在云上保存通讯录,日程表和文件的能力。这些是[Owncloud][35]所提供的非常赞的服务。在这个弄好后,我们还会设置一个网页邮件,这样就算你没带任何电子设备出去旅行时,或者说在你的手机或笔记本没电的情况下,也可以检查邮件。
既然我们已经拥有了一流的邮件服务器,让我们再为它增加在云上保存通讯录,日程表和文件的能力。这些是[Owncloud][35]所提供的非常赞的服务。在这个弄好后,我们还会设置一个网页邮件,这样就算你没带任何电子设备出去旅行时,或者说在你的手机或笔记本没电的情况下,也可以通过网吧来检查邮件。
安装Owncloud非常直观而且在[这里][36]有非常好的介绍。在Debian系统里归根结底就是把owncloud的仓库添加到apt源里下载Owncloud的发行密钥并安装到apt钥匙链中然后通过apt-get安装Owncloud
@ -784,20 +785,20 @@ dovecot-antispam是一个安装包可以在我们发现有邮件被dspan误
apt-get update
apt-get install apache2 owncloud roundcube
在有提示的时候,选择**dbconfig**然后说你希望**roundcube**使用**mysql**。然后提供一下mysql的root密码并为roundcube的mysql用户设置一个漂亮的密码。然后按如下方式编辑roundcube的配置文件**/etc/roundcube/main.inc.php**这样登录roundcube默认会使用你的IMAP服务器
在有提示的时候,选择**dbconfig**并设置**roundcube**使用**mysql**。然后提供一下mysql的root密码并为roundcube的mysql用户设置一个漂亮的密码。然后按如下方式编辑roundcube的配置文件**/etc/roundcube/main.inc.php**这样登录roundcube默认会使用你的IMAP服务器
$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
现在我们来配置一下apache2网页服务器增加SSL支持这样我们可以和Owncloud和Roundcube对话时使用加密的方式传输我们的密码和数据。让我们打开Apache的ssl模块:
现在我们来配置一下apache2网页服务器增加SSL支持这样我们可以和Owncloud和Roundcube对话时使用加密的方式传输我们的密码和数据。让我们打开Apache的SSL模块:
a2enmod ssl
然后编辑文件**/etc/apache2/ports.conf**并设定以下参数:
NameVirtualHost *:80
Listen 80
ServerName www.jhausse.net
NameVirtualHost *:80
Listen 80
ServerName www.jhausse.net
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
@ -969,9 +970,9 @@ ServerName www.jhausse.net
a2ensite default default-ssl roundcube
service apache2 restart
关于网页邮件,可以通过网址**https://webmail.jhausse.net**来访问基本上能工作。之后使用邮箱全名例如roudy@jhausse.net和在本文一开始在邮件服务器数据库里设定的密码登录。第一次连接成功浏览器会警告说证书没有可靠机构的签名。这个没什么关系只要添加一个例外。
关于网页邮件,可以通过网址**https://webmail.jhausse.net**来访问基本上能工作。之后使用邮箱全名例如roudy@jhausse.net和在本文一开始在邮件服务器数据库里设定的密码登录。第一次连接成功浏览器会警告说证书没有可靠机构的签名。这个没什么关系只要添加一个例外即可
最后但很重要的是,我们将通过把以下内容你哦个写入**/etc/apache2/sites-available/owncloud**来为Owncloud创建一个虚拟主机。
最后但很重要的是,我们将通过把以下内容写入**/etc/apache2/sites-available/owncloud**来为Owncloud创建一个虚拟主机。
<IfModule mod_ssl.c>
<VirtualHost *:443>
@ -1040,33 +1041,33 @@ ServerName www.jhausse.net
就这些了现在你已经拥有自己的Google Drive日程表联系人Dropbox以及Gmail好好享受下新鲜恢复保护的隐私吧:-)
### 在云上同步你的设备 ###
## 在云上同步你的设备 ##
要同步你的邮件,你可以只是用你喜欢的邮件客户端Android或iOS自带的默认邮件应用[k9mail][37]或者电脑上的Thunderbird。或者你也可以使用我们设置好的网页邮件。
要同步你的邮件,你只需用你喜欢的邮件客户端即可Android或iOS自带的默认邮件应用[k9mail][37]或者电脑上的Thunderbird。或者你也可以使用我们设置好的网页邮件。
在Owncloud的文档里描述了如何与云端同步你的日程表和联系人。在Android系统中我用的是CalDAV-SyncCardDAV-Sync应用桥接了手机上Android自带日历以及联系人应用和Owncloud服务器。
对于文件有一个叫Owncloud的Android应用可以访问你手机上的文件然后自动把你拍的图片和视频上传到云中。在你的Mac/PC上访问云端文件也很容易在[Owncloud文档里有很好的描述][38]。
### 最后一点提示 ###
## 最后一点提示 ##
在上线后的前几个星期里,最好每天检查一下日志**/var/log/syslog**和**/var/log/mail.log**以保证一切都在顺利运行。在你邀请其他人(朋友,家人,等等)加入你的服务器之前这很重要。他们信任你能很好地架设个人服务器维护他们的数据,但是如果服务器突然崩溃会让他们很失望。
要添加另一个邮件用户,只要在数据库**mailserver**的**virtual_users**表中增加一行。
要添加另一个邮件用户,只要在数据库**mailserver**的**virtual\_users**表中增加一行。
要添加一个域名,只要在**virtual_domains**表中增加一行。然后更新**/etc/opendkim/SigningTable**为发出的邮件签名上传OpenDKIM密钥到服务器区域然后吃哦更年期OpenDKIM服务。
要添加一个域名,只要在**virtual_domains**表中增加一行。然后更新**/etc/opendkim/SigningTable**为发出的邮件签名上传OpenDKIM密钥到服务器区域然后重启OpenDKIM服务。
Owncloud有自己的用户数据库在用管理员帐号登录后可以修改。
最后万一在服务器临时崩溃的时候想办法找解决方案很重要。比如说在服务器恢复之前你的邮件应该送往哪儿一种方式是找个能帮你做备份MX的朋友同时你也可以当他的备份MX看下postfix的配置文件**main.cf**里**relay_domains**和**relay_recipient_maps**里的设定。与此类似如果你的服务器被破解然后一个坏蛋把你所有文件删了怎么办对于这个考虑增加一个常规备份系统就很重要了。Linode提供了备份选项。在1984.is里我用crontabs和scp做了一个基本但管用的自动备份系统。
最后万一在服务器临时崩溃的时候想办法找解决方案很重要。比如说在服务器恢复之前你的邮件应该送往哪儿一种方式是找个能帮你做备份MX的朋友同时你也可以当他的备份MX看下postfix的配置文件**main.cf**里**relay\_domains**和**relay\_recipient\_maps**里的设定。与此类似如果你的服务器被破解然后一个坏蛋把你所有文件删了怎么办对于这个考虑增加一个常规备份系统就很重要了。Linode提供了备份选项。在1984.is里我用crontabs和scp做了一个基本但管用的自动备份系统。
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/
作者:[Roudy Jhausse ][a]
作者:[Roudy Jhausse][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出