搭建满分的邮件服务器 (DKIM)

可以到 http://www.mail-tester.com/ 检测你的邮件分数, 满分才合格
很多朋友邮件发到 QQ 邮箱都进垃圾箱,或者干脆收不到,如何让你的邮件准确到达收件箱呢?
需要做到以下几点
SPF 记录 (重要)
DKIM 签名
IP 地址反向解析
邮件内容不要含有特殊字符以及明显的广告内容
SPF 记录的设置

向你的邮件域名添加一条 TXT 记录
v=spf1 ip4:发信服务器的IP ~all
当然您也可以添加多个 IP 地址,网上有很多教程,这里就不在赘述了。
反向解析 (PTR)

请联系你的机房,或 云服务商,国内目前仅阿里云可以联系客服进行免费设置,国外一般 VPS 的控制面板就可以。
DKIM 签名

本文使用的是 CentOS + Postfix 其他软件自行变通
首先,向你的 CentOS 添加 EPEL 库 , http://fedoraproject.org/wiki/EPEL 可以在这里寻找适合你操作系统的库。

我的服务器使用的是 CentOS 6.5 所以下载 EPEL 6 ( 由于 EPEL 所提供的镜像是 IPV6 地址,请确保你的服务器已经开启 IPV6 )
wget http://ftp6.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
rm -f epel-release-6-8.noarch.rpm
添加成功后,安装 opendkim
yum install opendkim
创建 opendkim 配置文件
vi /etc/opendkim.conf
填入以下内容
Canonicalization relaxed/relaxed
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
MinimumKeyBits 1024
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@127.0.0.1
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkim
创建密钥

mkdir /etc/opendkim/keys/YourDomain.com
opendkim-genkey -D /etc/opendkim/keys/YourDomain.com/ -d YourDomain.com -s default
创建完毕后,将其添加到 /etc/opendkim/KeyTable 中
default._domainkey.YourDomain.com YourDomain.com:default:/etc/opendkim/keys/YourDomain.com/default.private
然后添加 /etc/opendkim/SigningTable
*@YourDomain.com default._domainkey.YourDomain.com
设置允许进行签名的主机 到 /etc/opendkim/TrustedHosts 中,一般情况下都是本机发信,我们将 127.0.0.1 加入即可。
设置 DNS 记录

到 /etc/opendkim/keys/YourDomain.com/default.txt 可以找到你的 key 。

记录类型 TXT 子域名 default._domainkey ,记录内容就是 default.txt 里面从 v=DKIM1 开始的内容。

此时 DKIM 签名软件已经可以正常工作了,接下来就要让 Postfix 所发的邮件经过其处理
编辑 Postfix 配置

打开 Postfix 的 main.cf 配置文件,到达底部,添加如下内容
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
milter_protocol = 2
milter_default_action = accept
启动邮件服务器

service opendkim start
#正常返回应为 Starting OpenDKIM Milter: [ OK ]

postfix reload
如果没有错误的话,现在应该可以开始发送了

3大开源 Web 代理服务器横评:Squid、Privoxy、Varnish

Web 代理软件转发 HTTP 请求时并不会改变数据流量。它们可以配置成透明代理,而无需客户端配置。它们还可以作为反向代理放在网站的前端;这样缓存服务器可以为一台或多台 web 服务器提供无限量的用户服务。

网站代理功能多样,有着宽泛的用途:从缓存页面、DNS 和其他查询,到加速 web 服务器响应、降低带宽消耗。代理软件广泛用于大型高访问量的网站,比如纽约时报、卫报, 以及社交媒体网站如 Twitter、Facebook 和 Wikipedia。

页面缓存已经成为优化单位时间内所能吞吐的数据量的至关重要的机制。好的 Web 缓存还能降低延迟,尽可能快地响应页面,让终端用户不至于因等待内容的时间过久而失去耐心。它们还能将频繁访问的内容缓存起来以节省带宽。如果你需要降低服务器负载并改善网站内容响应速度,那缓存软件能带来的好处就绝对值得探索一番。

为深入探查 Linux 下可用的相关软件的质量,我列出了下边5个优秀的开源 web 代理工具。它们中有些功能完备强大,也有几个只需很低的资源就能运行。

Squid

Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。

Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。

Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。

其特性包括:

Web 代理:
通过缓存来降低访问时间和带宽使用
将元数据和访问特别频繁的对象缓存到内存中
缓存 DNS 查询
支持非阻塞的 DNS 查询
实现了失败请求的未果缓存
Squid 缓存可架设为层次结构,或网状结构以节省额外的带宽
通过广泛的访问控制来执行网站访问策略
隐匿请求,如禁用或修改客户端 HTTP 请求头特定属性
反向代理
媒体范围media-range限制
支持 SSL
支持 IPv6
错误页面的本地化 - Squid 可以根据访问者的语言选项对每个请求展示本地化的错误页面
连接固定Connection Pinning (用于 NTLM Auth Passthrough) - 一种允许 Web 服务器通过 Web 代理使用Microsoft NTLM 安全认证替代 HTTP 标准认证的方案
支持服务质量 QoS, Quality of Service流
选择一个 TOS/Diffserv 值来标记本地命中
选择一个 TOS/Diffserv 值来标记对端命中
选择性地仅标记同级或上级请求
允许任意发往客户端的 HTTP 响应保持由远程服务器处响应的 TOS 值
对收到的远程服务器的 TOS 值,在复制之前对指定位进行掩码操作,再发送到客户端
SSL Bump (用于 HTTPS 过滤和适配) - Squid-in-the-middle,在 CONNECT 方式的 SSL 隧道中,用配置化的客户端和服务器端证书,对流量进行解密和加密
支持适配模块
ICAP 旁路和重试增强 - 通过完全的旁路和动态链式路由扩展 ICAP,来处理多多个适应性服务。
支持 ICY 流式协议 - 俗称 SHOUTcast 多媒体流
动态 SSL 证书生成
支持 ICAP 协议 (Internet Content Adaptation Protocol)
完整的请求日志记录
匿名连接

网站: www.squid-cache.org
开发: 美国国家应用网络研究实验室(NLANR)和网络志愿者
授权: GNU GPL v2
版本号: 4.0.1
Privoxy

Privoxy (Privacy Enhancing Proxy) 是一个非缓存类 Web 代理软件,它自带的高级过滤功能可以用来增强隐私保护、修改页面内容和 HTTP 头部信息、访问控制,以及去除广告和其它招人反感的互联网垃圾。Privoxy 的配置非常灵活,能充分定制已满足各种各样的需求和偏好。它支持单机和多用户网络两种模式。

Privoxy 使用 action 规则来处理浏览器和远程站点间的数据流。

其特性包括:

高度配置化——可以完全定制你的配置
广告拦截
Cookie 管理
支持“Connection: keep-alive”。可以无视客户端配置而保持外发的持久连接
支持 IPv6
标签化Tagging,允许按照客户端和服务器的请求头进行处理
作为拦截intercepting代理器运行
巧妙的动作action和过滤机制用来处理服务器和客户端的 HTTP 头部
可以与其他代理软件链式使用
整合了基于浏览器的配置和控制工具,能在线跟踪规则和过滤效果,可远程开关
页面过滤(文本替换、根据尺寸大小删除广告栏, 隐藏的“web-bugs”元素和 HTML 容错等)
模块化的配置使得标准配置和用户配置可以存放于不同文件中,这样安装更新就不会覆盖用户的个性化设置
配置文件支持 Perl 兼容的正则表达式,以及更为精妙和灵活的配置语法
GIF 去动画
旁路处理大量点击跟踪click-tracking脚本(避免脚本重定向)
大多数代理生成的页面(例如 "访问受限" 页面)可由用户自定义HTML模板
自动监测配置文件的修改并重新读取
大多数功能可以基于每个站点或每个 URL 位置来进行控制

网站: www.privoxy.org
开发: Fabian Keil(开发领导者), David Schmidt, 和众多其他贡献者
授权: GNU GPL v2
版本号: 3.4.2
Varnish Cache

Varnish Cache 是一个为性能和灵活性而生的 web 加速器。它新颖的架构设计能带来显著的性能提升。根据你的架构,通常情况下它能加速响应速度300-1000倍。Varnish 将页面存储到内存,这样 web 服务器就无需重复地创建相同的页面,只需要在页面发生变化后重新生成。页面内容直接从内存中访问,当然比其他方式更快。

此外 Varnish 能大大提升响应 web 页面的速度,用在任何应用服务器上都能使网站访问速度大幅度地提升。

按经验,Varnish Cache 比较经济的配置是1-16GB内存+ SSD 固态硬盘。

其特性包括:

新颖的设计
VCL - 非常灵活的配置语言。VCL 配置会转换成 C,然后编译、加载、运行,灵活且高效
能使用 round-robin 轮询和随机分发两种方式来负载均衡,两种方式下后端服务器都可以设置权重
基于 DNS、随机、散列和客户端 IP 的分发器Director
多台后端主机间的负载均衡
支持 Edge Side Includes,包括拼装压缩后的 ESI 片段
重度多线程并发
URL 重写
单 Varnish 能够缓存多个虚拟主机
日志数据存储在共享内存中
基本的后端服务器健康检查
优雅地处理后端服务器“挂掉”
命令行界面的管理控制台
使用内联 C 语言来扩展 Varnish
可以与 Apache 用在相同的系统上
单个系统可运行多个 Varnish
支持 HAProxy 代理协议。该协议在每个收到的 TCP 请求——例如 SSL 终止过程中——附加一小段 http 头信息,以记录客户端的真实地址
冷热 VCL 状态
可以用名为 VMOD 的 Varnish 模块来提供插件扩展
通过 VMOD 定义后端主机
Gzip 压缩及解压
HTTP 流的通过和获取
神圣模式和优雅模式。用 Varnish 作为负载均衡器,神圣模式下可以将不稳定的后端服务器在一段时间内打入黑名单,阻止它们继续提供流量服务。优雅模式允许 Varnish 在获取不到后端服务器状态良好的响应时,提供已过期版本的页面或其它内容。
实验性支持持久化存储,无需 LRU 缓存淘汰

网站: www.varnish-cache.org
开发: Varnish Software
授权: FreeBSD
版本号: 4.1.0