IRedMail:修订间差异
(未显示28个用户的316个中间版本) | |||
第1行: | 第1行: | ||
==iRedmail | ==iRedmail 组件== | ||
iRedMail主要是使用下面软件来构建邮件系统,下面是Ubuntu 10.04的软件版本。 | |||
*Apache 2.2.x | |||
*PHP 5.3.x | |||
*MySQL 5.1.x | |||
*OpenLDAP 2.4.x | |||
*Postfix 2.7.x ( MTA ) | |||
*Dovecot 1.2.x | |||
*Amavisd 2.6.x | |||
*ClamAV 0.9x | |||
*SpamAssassin 3.2.x | |||
*Policyd 1.8.x | |||
*Pysieved 1.0 | |||
*Roundcube 0.7.2 (Webmail ) | |||
*phpMyAdmin 3.3 | |||
*phpLDAPadmin 1.2 | |||
*Awstats 6.9 | |||
组件的工作原理 | |||
amavisd-new 在这里的作用主要是: | |||
*负责调用 ClamAV 对邮件进行病毒扫描 | |||
*负责调用 SpamAssassin 对邮件内容进行过滤 | |||
*实现 DKIM 签名和验证功能,还有实现免责声明的功能。 | |||
[[Image:Iredmail60.png]] | |||
[[Image:Iredmail_amavise.png]] | |||
Postfix组件 | |||
[[Image:Iredmail37.png]] | |||
全部的组件 (图片来源 http://workaround.org/ispmail/lenny/bigpicture ) | |||
[[Image:Iredmail61.png]] | |||
1: 当邮件发送到服务器的25端口,postfix接受连接,它会做一些基本检查 | |||
*发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝 | |||
*是否是授权用户,可以进行转发 | |||
*接收者是否是服务器的用户,如果不是,马上拒绝 | |||
*如果我们启用的灰名单,那么会拒绝邮件或者接收 | |||
2:postfix 把邮件通过10024端口交给amavis来处理,注意amavis,只会检查邮件而不会丢弃或者拒绝邮件。 | |||
3:amavis调用SpamAssassin检查邮件是否是spam,如果SpamAssassin认为邮件是垃圾邮件,会给邮件打上标记spam | |||
4:amavis调用ClamAV,看邮件是否含有病毒 | |||
5:amavis把检查完的邮件,通过10025端口重新把邮件交回给postfix | |||
6:postfix把邮件交给LDA(local delivery agent),LDA是负责本地邮件投放到用户的邮箱,(我们这里使用dovecot提供的LDA功能,而不是postfix提供的LDA)邮件会进入用户的邮箱,Dovecot会执行用户设置的filter,也就是Dovecot通过调用Sieve,放到相关的文件夹 | |||
7:Dovecot 把邮件以maildir的方式存放在硬盘上。 | |||
8: 用户使用邮件客户端,通过pop3或imap协议进行连接。webmail RoundCube,是通过imap的方式来读取邮件。 | |||
==组件的选择,比较== | |||
linux下,对于开源软件来说,没有所谓像windows一样的邮件系统,你可以选择不同的组件,组成一个邮件系统,对于邮件来说,要实现一个功能,可能有多种组件,到底哪个最好,不同的组件间的如何搭配、组合,是一件非常头疼的事情。 | |||
网上的文档,组合也是非常多样,到底哪种是最好或者更优?文档不会介绍为什么选择这个组件的理由。一般的管理员很难判断。下面就是iRedMail选择组件的理由。 | |||
大家也可以参考这位老外的文章:http://workaround.org/ispmail 如果你细心查看这篇文档的几个版本,就会发现他的组件的不同和改进。现在他的组件,已经基本和iredmail是一样。从另外一个角度证明iRedMail的组件选择,是可以经得起考验的。可以肯定一点就是目前iredmail的功能,性能会比你照这个文档配置的效果更好。 | |||
===MTA Postfix=== | |||
linux比较有名的4大MTA,如果从功能上,应该都是可以满足你的需求,详细的比较,大家可以阅读http://shearer.org/MTA_Comparison | |||
*Sendmail | |||
MTA软件的很多先进功能都是在Sendmail上最先实现的。但Sendmail也有典型的历史问题,主要是整个程序的没有实现良好的模块化,运行时需要SID权限,以及配置文件复杂难懂。这些是阻碍Sendmail更好普及应用的一些客观问题。 | |||
*Qmail | |||
Qmail是新生一代的MTA代表,实现了模块化设计,避免了SID问题,基本功能齐全,配置较Sendmail简单,而且用户也很广泛。但Qmail从2002年开发工作基本停止,版本停止更新,只能通过第三方的补丁来实现更多的功能,补丁程序也相对零乱,这些都是长期使用Qmail的用户或者邮件服务提供商不得不认真考虑的问题。另外,Qmail的扩展性并不是很好,经常需要补丁来完成功能的扩展。 | |||
*Exim | |||
Ubuntu缺省的MTA,应该是非常不错,不过国内用户不多。 | |||
*Postfix | |||
Postfix在设计上可以说是最为优美的,其实现了良好的模块化,邮件的处理流程是通过调用各个功能模块来完成,在效率、功能、可用性、扩展及安全等方面都考虑得比较充分。 | |||
===MDA Dovecot=== | |||
pop和imap的服务器,有Dovecot 和Courier 作为选择。目前很多教程,都是采用Courier,只是因为Courier文档比较多,历史比较久。 | |||
如果你关注一下,国外很多历史比较久邮件系统的方案,都开始从Courier转到Dovecot上。 | |||
Dovecot从2002年发布以来,性能远远超越Courier。 | |||
Postfix可以直接使用Dovecot的后台认证,不需要分开配置。(如果使用Courier,我们必须安装配置额外的认证软件,比如Saslauthd,配置这个,会是一个噩梦,如果出现问题,很难排错),并且Dovecot,可以很方便实现磁盘配额的功能。 | |||
Dovecot作为Courier的可替换组件,Dovecot在磁盘读写量上比Courier减少25%左右,内存占用也比Courier节省10%到70%不等。 | |||
http://www.cnbeta.com/articles/72682.htm | |||
大家会发现,很多文档里,如果使用Counier,会介绍使用maildrop 作为LDA,也就是postfix把邮件交给maildrop,他负责投递到用户的邮箱。 | |||
如果我们使用Dovecot,那么就可以直接使用Dovecot带的LDA就可以。不需要额外的软件。 | |||
所以作为构建一个新的邮件服务器,Dovecot,肯定是最佳的选择,这个应该没有什么异议。 | |||
===WebMail RoundCube=== | |||
对于邮件系统来说,webmail是必不可少,修改密码,自动回复这些工作,必须登录webmail来设置。 | |||
开源的webmail,其实选择也很多。 | |||
*SquirrelMail | |||
*horde | |||
*Extmail | |||
*atmail | |||
*openwebmail | |||
*RoundCube | |||
RoundCube,算是webmail里后起之秀,从2005年开发发布。目前最新的版本0.51,已经支持插件的机制。现在开发的插件的社区很活跃。如果把所有的插件都装起来,那肯定是无敌。 | |||
对于开源的webmail,有一个很困惑国人的需求,当你在写邮件的时候,希望选择从通讯录里选择联系人。这个以前在任何的开源webmail里都是无法实现,甚至google的gmail也是最近才实现这个功能。 | |||
RoundCube 通过插件,已经完美实现了这个功能。 | |||
===Policyd=== | |||
灰名单,是对付垃圾邮件的一个有效的手段,很多文档介绍使用PostGrey来实现灰名单的功能。 | |||
Policyd,不但有灰名单的功能,还提供很多别的功能,可以大大提高反垃圾邮件的效果。有一点要注意的,目前iRedMail 使用的是policyd1.8的版本。大家可以参考 | |||
http://policyd.sourceforge.net/readme.html | |||
===OS Ubuntu=== | |||
iRedMail 有一个重要的设计原则,尽可能使用发行版提供的包,尤其是官方提供技术支持和安全更新的包,这样做的好处是很明显。 | |||
*升级方便 | |||
*安全更新有保证 | |||
iRedMail目前支持RedHat,Debian,Ubuntu和Freebsd几个发行版,Ubuntu软件包的支持是最好的,从Ubuntu9.04开始,iRedmail,就基本全部采用Ubuntu官方提供支持和更新的软件包来构建整个邮件系统,除了几个web管理程序以外(web管理程序,你可以不使用)。 | |||
已经有用户,顺利从9.04升级到9.10,邮件系统,没有任何影响。在未来的10.04,也是不会受到任何的影响,这就是iRedMail 和Ubuntu结合强大的地方。 | |||
可以这样理解,使用Ubuntu提供的邮件相关的软件包,装完后,用iRedMail 的安装脚本,快速帮助你按照那些几十页的技术文档,1分钟内完成全部的配置。 | |||
很多用户经常问一个问题:如果iRedMail项目停止,我怎么办,以后升级怎么办?其实如果你使用任何的邮件系统,都可能会有这样的风险。 | |||
不过使用iredmail,就会例外,因为只有一种情况,Ubuntu停止开发,你才会受影响。只要Ubuntu,继续发展,你的邮件系统,就可以继续更新。因为你的所有的软件包,都是Ubuntu官方的提供的,他们是会保证持续更新和安全漏洞的修复。 | |||
===内容过滤 SpamAssassin=== | |||
防垃圾邮件,是邮件系统的基本功能,SpamAssassin,是最有名的,尤其是和Amavisd ClamAV结合起来,这是一个经得起考虑的组合。 | |||
对于内容过滤,其实还有一个选择:dspam,我没有使用过dspam,无法具体评价。 | |||
目前从iRedMail的客户部署情况,基本没有用户反映垃圾邮件过滤有问题。 | |||
SpamAssassin怎么管理,有后台可以登录吗? | |||
===amavisd-new === | |||
amavisd-new,可以理解成一个代理,Postfix把邮件交给他,他负责联系杀毒和反垃圾。 | |||
amavisd-new 在这里的作用主要是: | |||
* 负责调用 ClamAV 对邮件进行病毒扫描 | |||
* 负责调用 SpamAssassin 对邮件内容进行过滤 | |||
如果大家看文档,还会发现有人使用maildrop,通过maildrop,maildrop也可以调用spamassassin和clamav,实现类似amavisd-new的功能。 | |||
大家可以阅读下面的文档,这是老外使用amavisd-new,ClamAV SpamAssassin的技术文档,那么就会明白为什么iredmail会选择这amavisd-new。 | |||
http://www200.pair.com/mecham/spam/ | |||
==iRedMail 简介== | ==iRedMail 简介== | ||
iRedMail 是一套基于 GPL 发布的 Shell 脚本,目的是全自动安装和配置邮件服务所需要的组件,以减轻系统管理员的负担。它提供了一个基本的命令行下的用户交互界面(使用 dialog 程序实现),用户只需要简单地选择他所希望使用的组件,就可以在几分钟内(少于 3 分钟)部署好一台功能强大的邮件服务器。 | |||
iRedmail 使用到的邮件相关的软件包,都是采用发行版提供的软件包。 | |||
*iRedMail 官方中文支持论坛 http://www.iredmail.org/bbs | |||
* 代码下载 http://code.google.com/iredmail | |||
== 安装需求 == | == 安装需求 == | ||
第15行: | 第197行: | ||
| iRedMail Version | | iRedMail Version | ||
|- | |- | ||
| Ubuntu | | Ubuntu (presise, 12.04) | ||
| | | 12.04 | ||
| i386, amd64 | | i386, amd64 | ||
| >= 0. | | >= 0.8.0 | ||
|- | |- | ||
| Ubuntu ( | | Ubuntu (Luicd,11.04) | ||
| | | 10.04 | ||
| i386, amd64 | | i386, amd64 | ||
| >= 0. | | >= 0.6.1 | ||
|- | |||
|} | |} | ||
* | *生产中部署至少需要512MB 内存. | ||
[http://www.debian.org/CD/http-ftp/ Downloading Ubuntu CD/DVD images via HTTP/FTP] | [http://www.debian.org/CD/http-ftp/ Downloading Ubuntu CD/DVD images via HTTP/FTP] | ||
== 准备 == | == 准备 == | ||
第56行: | 第240行: | ||
$cat /etc/hosts | $cat /etc/hosts | ||
127.0.0.1 mail.example.com mail | 127.0.0.1 mail.example.com mail localhost.localdomain localhost | ||
检查FQDN Name设置, | 检查FQDN Name设置, | ||
让hostname修改马上生效 | |||
#hostname -F /etc/hostname | |||
# hostname -f | # hostname -f | ||
mail.example.com | mail.example.com | ||
第68行: | 第252行: | ||
===设置源=== | ===设置源=== | ||
只需要相应的发行版的'main' 和 'universe' , 使用安装系统的时候ubuntu缺省的源,就可以了。 | |||
==开始安装iredmail== | |||
* 切换到root用户 | |||
# sudo su - | |||
* 下载最新版本的iredmail,解压 | |||
* iredmail最新版本是iRedMail-0.8.4,请到www.iredmail.org下载。 | |||
* 对于中国用户:由于“iredmail.org”域名被中国大陆于2011年6月4日封锁,可通过其IP地址为“106.187.51.47”(不含引号)访问,在“iRedMail.sh”执行前请更换/ root/iRedMail- XYZ / PKGS / get_all.sh中所有的iredmail.org“为“106.187.51.47”(不含引号)。这是一个的Linode VPS托管在日本东京。 | |||
<pre> | |||
#wget http://iredmail.googlecode.com/files/iRedMail-0.7.0.tar.bz2 | |||
#tar jxvf iRedMail-0.7.0.tar.bz2 | |||
#cd iRedMail-0.7.0 | |||
#bash iRedMail.sh | |||
</pre> | |||
*可以开始执行主脚本,它会调用 'dialog' 程序引导用户配置邮件服务器 | |||
*iRedMail 安装进程的欢迎页面 | |||
[[Image:Iredmail01.png]] | |||
*选择用于存储所有邮件的目录(注意:由于所有邮件都将存储在这个目录,所以这个目录需要占用较多的磁盘空间) | |||
[[Image:Iredmail02.png]] | |||
===LDAP=== | |||
[[ldap图解|ldap图解]] | |||
===MYSQL=== | |||
[[mysql安装图解|mysql安装图解]] | |||
==使用iredmail== | |||
安装完成后,一定要仔细阅读iredmail.tip,里面包括设置信息和帐号,下面各个应用的访问路径。这个是本安装的范例 (http://code.google.com/p/iredmail/source/browse/extra/iRedMail.tips ) | |||
* mysql 存储虚拟用户和domain 我们通过iRedAdmin 进行邮件domain,用户管理 | |||
* mysql 管理,可以通过phpmyadmin管理 | |||
* LDAP 存储虚拟用户和domain,我们通过iRedAdmin进行邮件domain,用户管理 | |||
* LDAP 的管理,可以通过phpldapadmin管理 | |||
===webmail RoundCube=== | |||
*可以使用http://your_server/mail/ (or /webmail, /roundcube)访问webmail (注意,postmaster不是邮箱用户,不能登陆) | |||
[[Image:Iredmail18.png]] | |||
*由于[email protected]是root的alias,所以会受到系统发的邮件,请细心阅读这两封邮件,iredmail.tip 包含所有的邮件设置的相关信息。 | |||
[[Image:Iredmail19.png]] | |||
* 设置假期外出,需要新建过滤器 | |||
[[Image:Iredmail20.png]] | |||
* 全局地址簿 (LDAP) | |||
[[Image:Iredmail21.png]] | |||
===iRedAdmin=== | |||
iRedAdmin开源版本是iredmail官方开发邮件后台管理,目前可以同时管理ldap和mysql。 | |||
大家也可以通过iredmail官方提供的demo (http://www.iredmail.org/admin_demo.html ) 深入了解iredadmin | |||
* 登录iRedAdmin | |||
可以使用https://your_server/iredadmin 访问iredadmin (注意是 https ) | |||
[[Image:Iredadmin18.png]] | |||
* 修改语言 | |||
[[Image:Iredadmin28.png]] | |||
*控制台 | |||
[[Image:Iredadmin19.png]] | |||
*域名管理 | |||
[[Image:Iredadmin24.png]] | |||
* 添加domain | |||
[[Image:Iredadmin29.png]] | |||
*用户管理,添加用户 | |||
[[Image:Iredadmin27.png]] | |||
*管理员管理 添加管理员 | |||
[[Image:Iredadmin30.png]] | |||
===phpLDAPAdmin === | |||
可以使用https://your_server/ldap 访问iredadmin (注意是 https ) | |||
*登录phpLDAPAdmin | |||
[[Image:Iredmail29.png]] | |||
*查看ldap | |||
[[Image:Iredmail30.png]] | |||
===Awstats === | |||
可以使用https://your_server/awstats/awstats.pl 访问Awstats (注意是 https ) | |||
*登录Awstats | |||
[[Image:Iredmail31.png]] | |||
* 如果希望查看邮件的流量,你需要修改你的链接,(https://your_server/awstats/awstats.pl?config=mail ) 在上面链接加上 ?config=mail | |||
[[Image:Iredmail32.png]] | |||
===phpMyAdmin === | |||
可以使用https://your_server/phpmyadmin 访问phpMyAdmin (注意是 https ) | |||
==DNS== | |||
DNS记录,需要你到你的域名托管商那里进行设置或者你自己管理DNS服务器。不少域名托管商不支持txt记录或者不支持DKIM记录,所以你就无法使用SPF和DKIM的功能。 | |||
DNS的修改,需要48小时以上才能生效。 | |||
国内的万网是不支持DKIM,目前新网是支持SPF和DKIM | |||
===MX记录=== | |||
邮件的MX记录最好是指向机器A记录,尽量不要直接指向IP地址(不符合规范)。 | |||
* 添加A记录 | |||
mail.example.com 192.168.1.100 | |||
* 添加MX记录 | |||
example.com mail.example.com | |||
===SPF记录=== | |||
*SPF 记录指向A主机记录 | |||
<pre> | |||
example.com. 3600 IN TXT "v=spf1 mx mx:mail.example.com -all" | |||
</pre> | |||
*SPF 记录指向IP地址 | |||
<pre> | |||
example.com. 3600 IN TXT "v=spf1 ip4:192.168.1.100 -all" | |||
</pre> | |||
===DKIM记录=== | |||
可以通过iredmail.tips 获得域名的DKIM,也可以在命令行下输入 | |||
<pre> | |||
# amavisd-new showkeys | |||
; key#1, domain example.com, /var/lib/dkim/example.com.pem | |||
dkim._domainkey.example.com. 3600 TXT ( | |||
"v=DKIM1; p=" | |||
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGNVMuQRKqYeySIzqTGTm3xRzF" | |||
"/ZzhmMnpZkEcVVjFAk+t7E388oFGu/knyh6KBKwpZxHUN5HoOYVjMudqaR2FcSvK" | |||
"z+joFj8Vh3rXoTLa1zHDyfD7hICzxdEgmQZ8MJM5rjPPrRGZXnPowNYDsd6nDJ86" | |||
"N38iFYU+jALBYDLBwQIDAQAB") | |||
</pre> | |||
把上面记录添加到ISP的DNS记录 | |||
<pre> | |||
dkim._domainkey.example.com. v=DKIM1; p=MIGfMA0....(省略)DLBwQIDAQAB | |||
</pre> | |||
[[Image:Iredmail35.png]] | |||
添加完DNS记录后,如果记录生效,可以通过运行命令检测 | |||
<pre> | |||
# amavisd-new testkeys | |||
TESTING: dkim._domainkey.example.com => pass | |||
</pre> | |||
==检查DNS设置== | |||
下面有几种方法,可以帮助你检测DNS是否设置生效和正常工作 | |||
===windows nslookup=== | |||
<pre> | |||
C:\>nslookup | |||
Default Server: unknown | |||
Address: 192.168.1.1 | |||
> server 4.2.2.1 | |||
Default Server: vnsc-pri.sys.gtei.net | |||
Address: 4.2.2.1 | |||
> set type=mx | |||
> example.com | |||
Server: vnsc-pri.sys.gtei.net | |||
Address: 4.2.2.1 | |||
Non-authoritative answer: | |||
example.com MX preference = 20, mail exchanger = mail.example.com | |||
> set type=txt | |||
> example.com | |||
Server: vnsc-pri.sys.gtei.net | |||
Address: 4.2.2.1 | |||
Non-authoritative answer: | |||
example.com text = | |||
"v=spf1 ip4:192.168.1.100 -all" | |||
> dkim._domainkey.example.com | |||
Server: vnsc-pri.sys.gtei.net | |||
Address: 4.2.2.1 | |||
Non-authoritative answer: | |||
dkim._domainkey.example.com text = | |||
"v=DKIM1; p= MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsgZaIvYHAos2jbp3CHW0 | |||
AwrTnAEwV1p4EaZP/JuF8t1BETBVg6WJr3YWN5ijCpi9vnw96nmf/u5MgtbLwZ+AzDBkbOY7Jbb/hIO+ | |||
mpmmfdJAY3w8KoXLCuQKDysXOys45YtfJEj66s51EHH3W+iXPYw3I/NWHjY3a5/mXnk4XJQIDAQAB" | |||
</pre> | |||
===linux dig=== | |||
如果你的机器没有dig命令,你需要安装 | |||
<pre> | |||
apt-get install dnsutils | |||
</pre> | |||
这个时候,就可以使用dig命令 | |||
* MX记录 | |||
<pre> | |||
# host exmple.com | |||
example.com has address 192.168.1.100 | |||
example.com mail is handled by 10 mail.example.com. | |||
</pre> | |||
* SPF记录 | |||
<pre> | |||
# dig txt hotmail.com | |||
; <<>> DiG 9.4.2-P2 <<>> txt hotmail.com | |||
;; global options: printcmd | |||
;; Got answer: | |||
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43130 | |||
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 | |||
;; QUESTION SECTION: | |||
;hotmail.com. IN TXT | |||
;; ANSWER SECTION: | |||
hotmail.com. 3600 IN TXT "v=spf1 include:spf-a.hotmail.com include:spf-b.hotmail.com include:spf-c.hotmail.com include:spf-d.hotmail.com ~all" | |||
;; Query time: 176 msec | |||
;; SERVER: 64.71.161.8#53(64.71.161.8) | |||
;; WHEN: Sat Dec 5 08:43:51 2009 | |||
;; MSG SIZE rcvd: 157 | |||
</pre> | |||
* DKIM记录 | |||
<pre> | |||
#dig txt dkim._domainkey.example.com | |||
</pre> | |||
===web工具=== | |||
*黑名单检查 | |||
http://www.mxtoolbox.com/ | |||
通过这个不但可以检查各种DNS设置,还可以检测到你的IP地址,是否已经给列入黑名单。 | |||
*检测MX记录 | |||
http://zmailer.org/mxverify.html | |||
*检测SPF记录 | |||
http://www.openspf.org/ | |||
*测试spf和dkim记录 | |||
http://www.brandonchecketts.com/emailtest.php | |||
网页里有一个邮箱地址,你可以通过安装过程中创建的第一个用户www,发送邮件给这个测试邮箱,你就可以马上看到结果 | |||
*发邮件到gmail | |||
查看发送过去的邮件的源码, 如果显示 dkim=pass 和 SPF: pass 就表示正常 | |||
<pre> | |||
Received-SPF: pass (google.com: domain of [email protected] designates 66.160.197.199 | |||
as permitted sender) client-ip=66.160.197.199; | |||
Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] | |||
designates 66.160.197.199 as permitted sender) [email protected]; | |||
dkim=pass [email protected] | |||
</pre> | |||
==查看LOG== | |||
Linux下,如果出现问题,那么排错最佳的方式就是查看log,不过为了性能,有些应用,缺省下没有开启错误log,我们需要启用。 | |||
===APACHE=== | |||
<pre> | |||
# tail /var/log/apache2/error.log #查看log | |||
# tail -0f /var/log/apache2/error.log #实时查看log | |||
</pre> | |||
===OPENLDAP=== | |||
当你采用ldap来验证用户,当用户登录出现问题的时候,你就需要查看ldap的log,看那个地方出错。 | |||
*缺省的情况下,openldap的log没有启用,我们需要修改配置文件 /etc/ldap/slapd.conf | |||
<pre> | |||
loglevel 256 # <-- change form 0 to 256 | |||
</pre> | |||
*重新启动LDAP服务 | |||
<pre> | |||
/etc/init.d/slapd restart | |||
</pre> | |||
*查看log | |||
<pre> | |||
tail /var/log/openldap.log | |||
</pre> | |||
===dovecot=== | |||
当接收邮件有问题的时候,我们需要查看dovecot的log, | |||
*编辑/etc/dovecot/dovecot.conf | |||
<pre> | |||
mail_debug = yes #把注释去掉 | |||
</pre> | |||
*从新启动dovecot服务 | |||
<pre> | |||
# /etc/init.d/dovecot restart | |||
</pre> | |||
*查看log | |||
<pre> | |||
# tail /var/log/dovecot.log | |||
</pre> | |||
===Sieve=== | |||
当RoundCube里过滤器不工作或者有问题的情况下,你就需要查看sieve的log | |||
<pre> | |||
# tail /var/log/sieve.log | |||
</pre> | |||
===Postfix=== | |||
查看邮件发送的问题,就需要查看posfix Log | |||
<pre> | |||
#tail /var/log/mail.log | |||
</pre> | |||
Postfix 排错,还可以通过Postfix提供邮件队例队列管理工具: | |||
<pre> | |||
postqueue -p 列出队列里的所有邮件 | |||
postsuper -d ID 删除一封邮件 | |||
postsuper -d ALL 删除所有邮件 | |||
postsuper –h ID 保留邮件 | |||
postsuper -r ALL 重新排例 | |||
postcat -q ID 显示邮件内容 | |||
postqueue -f 清空邮件 | |||
</pre> | |||
==邮件客户端== | |||
iRedmail提供pop,imap和pops,imaps的连接,可以根据需要选择采用哪种方式 | |||
{| cellspacing="0" border="1" | |||
|- | |||
| Protocol | |||
| Unencrypted port | |||
| TLS Port | |||
| SSL Port | |||
|- | |||
| SMTP | |||
| 25 | |||
| 587 | |||
| 465 | |||
|- | |||
| POP3 | |||
| 110 | |||
| 110 | |||
| 995 | |||
|- | |||
| IMAP | |||
| 143 | |||
| 143 | |||
| 993 | |||
|} | |||
===Outlook2007=== | |||
[[Outlook2007设置图解|Outlook2007设置图解]] | |||
===Outlook 2003=== | |||
*pop3 非加密 | |||
这个设置和outlook 2007是一样,参考上面设置就可以, pop使用110,smtp是25 | |||
*pop3 加密 | |||
注意端口,这是和outlook2007不同的地方,outlook2003 只支持SSL,导入证书,可以参考上面设置 | |||
[[Image:Iredmail51.gif]] | |||
*imap 非加密 | |||
这个和2007设置是一样,imap是143,smtp是25 | |||
*imap 加密 | |||
[[Image:Iredmail55.gif]] | |||
==FAQ== | |||
这个faq会不定期更新,最新的FAQ,大家可以直接访问 http://www.iredmail.org/faq.html | |||
===邮件服务器同步备份,切换,群集,冗余=== | |||
邮件系统的备份,可以考虑采用rsync, unison,如果数据量大,可以参考文章 | |||
http://blog.daviesliu.net/2008/04/24/sync/ | |||
实现邮件的群集,有很多方案,一般可以分为 | |||
采用共享存储 (多台服务器)负载均衡,每台服务器都在工作。通过这种方式,可以实现支撑更多的用户。 | |||
没有共享存储 (两台服务器)实现冗余,一台机器是闲着。 | |||
你可以把iredmail部署到这两种方案上,iRedMail官方网站提供这两种方案的技术支持。 | |||
*采用共享存储,一般都是利用lvs | |||
[[Image:Iredmail_lvs.jpg]] | |||
*不采用共享存储,就可以采用DRBD+heardbeat 的方案 | |||
DRBD,简单理解,就是网络的raid1,实现两台服务器的镜像。具体的配置过程,大家可以参考 http://www.iredmail.org/bbs/topic1298-view.html | |||
[[Image:Iredmail_drbd.gif]] | |||
===停用灰名单=== | |||
灰名单,是有效阻止垃圾邮件的手段,原理是当一个新的邮箱地址发邮件过来,都会先拒绝2次,然后第三次才会接收下来。一般发垃圾邮件的人,因为队列太长,就不会再尝试投递。 | |||
灰名单会导致第一次发送延迟,不过第二次以后就没有问题。如果希望停止灰名单 | |||
编辑/etc/postfix-policyd.conf | |||
Policyd v2 (codenamed "cluebringer")编辑/etc/cluebringer/cluebringer.conf | |||
<pre> | |||
# 1=on 0=off | |||
GREYLISTING=0 #把1改成0 | |||
</pre> | |||
重新启动policy服务 | |||
<pre> | |||
# /etc/init.d/postfix-policyd restart | |||
</pre> | |||
===修改root的alias=== | |||
iRedmail的安装过程,我们设置了root的alias,如果我们希望修改邮箱地址。 | |||
编辑/etc/postfix/aliases 改成你需要的邮箱地址。以后系统的警告邮件就会发送到新的邮箱。 | |||
<pre> | |||
# See man 5 aliases for format | |||
postmaster: root | |||
clamav: root | |||
root: [email protected] | |||
policyd: [email protected] | |||
amavis: root | |||
</pre> | |||
修改后,需要运行下面命令才可以生效。 | |||
<pre> | |||
# postalias /etc/postfix/aliases | |||
</pre> | |||
这个时候可以测试一下,给root发一封邮件,是否生效 | |||
<pre> | |||
cd iRedMail-0.5.1 | |||
mail -s "test" root < iRedMail.tips | |||
</pre> | |||
===添加免责声明=== | |||
iRedmail 是通过Amavisd-new + alterMIME 实现出站的邮件都添加免责声明。alterMIME支持Per-domain,Sub-domain,Per-user添加免责声明,同时支持txt和html格式。缺省情况下,iRedMail没有启用。 | |||
*编辑 /etc/amavis/conf.d/50-user 把注释去掉。启用免责声明的功能 | |||
<pre> | |||
# ------------ Disclaimer Setting --------------- | |||
# Uncomment this line to enable singing disclaimer in outgoing mails. | |||
$defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; #把注释去掉 | |||
</pre> | |||
*创建一个test免责声明,这个声明会添加到所有的邮件里。如果希望每个domain或者每个用户不同声明,那么可以单独添加免责声明。存放的路径是/etc/postfix/disclaimer/ | |||
<pre> | |||
#echo 'Testing disclaimer.' > /etc/postfix/disclaimer/default.txt | |||
</pre> | |||
*重启amavisd服务 | |||
<pre> | |||
# /etc/init.d/amavis restart | |||
</pre> | |||
这个时候,所有往外发送的邮件,都会在底部加上 'Testing disclaimer.' | |||
===集成Razor2和Pyzor=== | |||
*打开防火墙端口 | |||
Razor2:必须打开防火墙端口 2307/TCP | |||
pyzor: 必须打开防火墙端口 24441/UDP | |||
编辑/etc/default/iptables 文件 | |||
<pre> | |||
# http/https, smtp/smtps, pop3/pop3s, imap/imaps, ssh | |||
-A INPUT -p tcp -m multiport --dport 80,443,25,465,110,995,143,993,587, | |||
465,22,2307,24441 -j ACCEPT # <-- Add 2307 24441 | |||
</pre> | |||
重启iptables服务 | |||
<pre> | |||
# /etc/init.d/iptables restart | |||
</pre> | |||
*安装Razor2 | |||
<pre> | |||
root@mail:~# apt-get install razor | |||
Reading package lists... Done | |||
Building dependency tree | |||
Reading state information... Done | |||
The following NEW packages will be installed: | |||
razor | |||
0 upgraded, 1 newly installed, 0 to remove and 24 not upgraded. | |||
Need to get 125kB of archives. | |||
After this operation, 549kB of additional disk space will be used. | |||
Get:1 http://archive.ubuntu.com jaunty/universe razor 1:2.85-1 [125kB] | |||
Fetched 125kB in 1s (99.4kB/s) | |||
Selecting previously deselected package razor. | |||
(Reading database ... 23030 files and directories currently installed.) | |||
Unpacking razor (from .../razor_1%3a2.85-1_amd64.deb) ... | |||
Setting up razor (1:2.85-1) ... | |||
</pre> | |||
*设置Razor2 | |||
<pre> | |||
root@mail:~# mkdir /var/lib/amavis/.razor; chown -Rf amavis:amavis /var/lib/amavis/.razor | |||
root@mail:~# | |||
root@mail:~# su amavis | |||
$ razor-admin -home=/var/lib/amavis/.razor -create | |||
$ razor-admin -home=/var/lib/amavis/.razor -discover | |||
$ razor-admin -home=/var/lib/amavis/.razor -register | |||
Register successful. Identity stored in /var/lib/amavis/.razor/identity-rupCWQ7Auy | |||
$ exit | |||
</pre> | |||
*安装Pyzor | |||
<pre> | |||
# apt-get install pyzor | |||
Reading package lists... Done | |||
Building dependency tree | |||
Reading state information... Done | |||
The following extra packages will be installed: | |||
python-gdbm | |||
Suggested packages: | |||
python-gdbm-dbg | |||
The following NEW packages will be installed: | |||
python-gdbm pyzor | |||
0 upgraded, 2 newly installed, 0 to remove and 24 not upgraded. | |||
Need to get 56.3kB of archives. | |||
After this operation, 336kB of additional disk space will be used. | |||
Do you want to continue [Y/n]? y | |||
Get:1 http://archive.ubuntu.com jaunty/main python-gdbm 2.6.2-0ubuntu1 [18.5kB] | |||
Get:2 http://archive.ubuntu.com jaunty/universe pyzor 1:0.4.0+cvs20030201-8 [37.8kB] | |||
Fetched 56.3kB in 0s (57.4kB/s) | |||
Selecting previously deselected package python-gdbm. | |||
(Reading database ... 23094 files and directories currently installed.) | |||
Unpacking python-gdbm (from .../python-gdbm_2.6.2-0ubuntu1_amd64.deb) ... | |||
Selecting previously deselected package pyzor. | |||
Unpacking pyzor (from .../pyzor_1%3a0.4.0+cvs20030201-8_all.deb) ... | |||
Setting up python-gdbm (2.6.2-0ubuntu1) ... | |||
Setting up pyzor (1:0.4.0+cvs20030201-8) ... | |||
</pre> | |||
*设置pyzor | |||
<pre> | |||
# mkdir /var/lib/amavis/.pyzor; chown amavis:amavis /var/lib/amavis/.pyzor | |||
# su amavis | |||
$ pyzor --homedir /var/lib/amavis/.pyzor discover | |||
/var/lib/python-support/python2.6/pyzor/__init__.py:11: DeprecationWarning: the sha module is deprecated; use the hashlib module instead | |||
import sha | |||
/var/lib/python-support/python2.6/pyzor/client.py:10: DeprecationWarning: the multifile module has been deprecated since Python 2.5 | |||
import multifile | |||
downloading servers from http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x | |||
$ exit | |||
</pre> | |||
*编辑/etc/spamassassin/local.cf 在最末尾添加下面内容 | |||
<pre> | |||
use_razor2 1 | |||
score RAZOR2_CHECK 2.500 | |||
score PYZOR_CHECK 2.500 | |||
</pre> | |||
*重启amavis服务 | |||
<pre> | |||
# /etc/init.d/amavis restart | |||
</pre> | |||
===卸载iRedMail=== | |||
当你希望卸载或者重新安装iredmail,那么可以利用iRedMail提供的工具,快速卸载iredmail各个组件,进行重新安装 | |||
<pre> | |||
# cd iRedMail-0.5.1/tools/ | |||
# bash clear_iredmail.sh | |||
</pre> | |||
按照提示进行就可以,当你重新安装的时候,你还是需要运行下载脚本,再运行安装脚本。 | |||
注:这个脚本已经不可用,原作者建议备份好数据,重新安装系统。 | |||
===批量创建用户=== | |||
iRedMail提供脚本,可以让用户快速添加用户 | |||
*MYSQL | |||
你可以编辑create_mail_user_MySQL.sh,修改默认值,如果你安装的时候修改的邮件的存储路径,那么你必须修改脚本的 STORAGE_BASE_DIRECTORY | |||
创建邮箱用户的缺省密码是和用户名相同 | |||
<pre> | |||
# cd iRedMail-0.5.1/tools/ | |||
# bash create_mail_user_MySQL.sh exmple.com user1 user2 user3 | |||
</pre> | |||
这个时候,会创建output.sql 文件 | |||
<pre> | |||
# mysql -uroot -p | |||
mysql> USE vmail; | |||
mysql> SOURCE /path/to/output.sql; | |||
</pre> | |||
*LDAP | |||
使用create_mail_user_OpenLDAP.sh脚本,可以快速创建ldap的邮件用户,我们需要修改脚本 | |||
创建邮箱用户的缺省密码是和用户名相同 | |||
<pre> | |||
STORAGE_BASE_DIRECTORY="/var/vmail/vmail01" #如果你安装的时候修改的邮件的存储路径 | |||
LDAP_SUFFIX="dc=iredmail,dc=org" #你的ldap SUFFIX | |||
BINDPW='passwd' #ldap管理员cn=manager 密码 | |||
</pre> | |||
运行脚本,创建用户 | |||
<pre> | |||
# bash create_mail_user_OpenLDAP.sh example.com user1 user2 | |||
</pre> | |||
===支持大附件=== | |||
要注意的是:下面的设置,是可以让你的服务器是可以发送大附件,也需要对方的服务器能够接收大附件,否则还是无法发送出去。 | |||
*客户端发送大附件 | |||
如果你是希望邮件客户端发送大附件,那么你只需要运行 | |||
<pre> | |||
# postconf -e message_size_limit='104857600' #把附件增加到100m | |||
</pre> | |||
重启postfix服务 | |||
<pre> | |||
# /etc/init.d/postfix restart | |||
</pre> | |||
*webmail | |||
如果希望webmail,发送大附件,那么你还需要多修改2个地方 | |||
1:编辑/etc/php5/apache2/php.ini 文件 | |||
<pre> | |||
upload_max_filesize = 100M; | |||
post_max_size = 100M; | |||
</pre> | |||
2:修改/usr/share/apache2/roundcube/.htaccess 文件 | |||
<pre> | |||
php_value upload_max_filesize 100M | |||
php_value post_max_size 100M | |||
</pre> | |||
重启apache服务 | |||
<pre> | |||
# /etc/init.d/apache2 restart | |||
</pre> | |||
===停用Amavisd + ClamAV + SpamAssassin=== | |||
如果希望停用杀毒和发垃圾的功能,编辑/etc/postfix/main.cf 文件,到把最底下的这行注释掉 | |||
<pre> | |||
content_filter = smtp-amavis:[127.0.0.1]:10024 | |||
</pre> | |||
这个时候,postfix接收到的邮件,就不会再交给amavis处理,就可以把amavisd, clamd, freshclam服务停止。不过要注意的是这个时候DKIM的功能,也是无法使用,因为iredmail的DKIM是通过amavis来实现的。 | |||
rolaod postifx服务 | |||
<pre> | |||
#update-rc.d amavis purge | |||
#update-rc.d clamav purge | |||
# /etc/init.d/postfix reload | |||
</pre> | |||
===Fetchmail=== | |||
目前iRedMail还没有集成fetchmail的功能,如果你需要使用fetchmail,你可以自己集成 | |||
*安装fetchmail | |||
<pre> | |||
apt-get install fetchmail | |||
</pre> | |||
*设置fetchmail daemon运行修改/etc/default/fetchmail 文件 | |||
<pre> | |||
START_DAEMON=yes #把no改为yes | |||
</pre> | |||
*创建/etc/fetchmailrc 文件,添加下面的内容 | |||
<pre> | |||
set daemon 300 #5分钟取一次邮件 | |||
set syslog | |||
set postmaster root | |||
set no bouncemail | |||
defaults: | |||
timeout 300 | |||
antispam -1 | |||
batchlimit 100 | |||
#用户:shakechen 也可以是 [email protected] 密码是:12345678 本地的邮箱:[email protected] | |||
poll pop3.126.com protocol POP3 user shakechen there with password 12345678 is [email protected] here | |||
</pre> | |||
最后一行意思是把126邮箱里的用户的邮件,投递到本地的邮箱帐号 [email protected] | |||
*设置/etc/fetchmailrc 文件权限 | |||
<pre> | |||
chmod 600 /etc/fetchmailrc | |||
chown fetchmail /etc/fetchmailrc | |||
</pre> | |||
*重启服务 | |||
<pre> | |||
/etc/init.d/fetchmail start | |||
</pre> | |||
* 查看log | |||
<pre> | |||
# tail /var/log/syslog | |||
Dec 7 16:01:36 mail fetchmail[4179]: 723 messages (723 seen) for shakechen at pop3.126.com (36923210 octets). | |||
Dec 7 16:01:37 mail fetchmail[4179]: sleeping at Mon Dec 7 16:01:37 2009 for 30 seconds | |||
Dec 7 16:02:07 mail fetchmail[4179]: awakened at Mon Dec 7 16:02:07 2009 | |||
Dec 7 16:02:08 mail fetchmail[4179]: 723 messages (723 seen) for shakechen at pop3.126.com (36923210 octets). | |||
Dec 7 16:02:09 mail fetchmail[4179]: sleeping at Mon Dec 7 16:02:09 2009 for 30 seconds | |||
</pre> | |||
===创建新的SSL key=== | |||
如果你修改了计算机名字或者希望使用自己的信息创建自己的ssl | |||
key。 | |||
*下载iredmail提供的脚本 | |||
<pre> | |||
# wget http://iredmail.googlecode.com/hg/iRedMail/tools/generate_ssl_keys.sh | |||
</pre> | |||
* 编辑脚本里的你希望修改的相关信息 | |||
<pre> | |||
# SSL key. | |||
export SSL_CERT_FILE="${ROOTDIR}/certs/iRedMail_CA.pem" | |||
export SSL_KEY_FILE="${ROOTDIR}/private/iRedMail.key" | |||
export TLS_COUNTRY='CN' | |||
export TLS_STATE='GuangDong' | |||
export TLS_CITY='ShenZhen' | |||
export TLS_COMPANY="${HOSTNAME}" | |||
export TLS_DEPARTMENT='IT' | |||
export TLS_HOSTNAME="${HOSTNAME}" | |||
export TLS_ADMIN="root@${HOSTNAME}" | |||
</pre> | |||
* 执行脚本 | |||
<pre> | |||
# bash generate_ssl_keys.sh | |||
SSL keys were generated: | |||
- /root/certs/iRedMail_CA.pem | |||
- /root/private/iRedMail.key | |||
</pre> | |||
* 把以前的证书备份一下,把新证书复制到下面两个目录下。 | |||
<pre> | |||
/etc/ssl/private/iRedMail.key | |||
/etc/ssl/certs/iRedMail_CA.pem | |||
</pre> | |||
===SPAM邮件进入垃圾箱=== | |||
如果用户是使用邮件客户端,是无法收取到junk的邮件,所以iredmail缺省是让spam的邮件进入收件箱。如果我们希望让spam的邮件,不进入收件箱,直接存在垃圾邮箱的文件夹里。 | |||
<pre> | |||
# cd /var/vmail/sieve | |||
# cp dovecot.sieve.sample dovecot.sieve | |||
</pre> | |||
*重启dovecot 服务 | |||
<pre> | |||
# /etc/init.d/dovecot restart | |||
</pre> | |||
===如何修改hostname=== | |||
如果我们装完iremdail后,希望修改hostname(FQDN),那么我们需要修改下面相关的内容。 | |||
#修改hostname in /etc/hostname and /etc/hosts | |||
#产生新的证书 参考上面的faq | |||
#修改 hostname in amavis.conf | |||
#修改 hostname in dovecot-quota-warning.sh | |||
#修改 hostname in posfix/main.cf | |||
#cp -Rf /etc /var/spool/postfix | |||
===检测系统的反垃圾和病毒能力=== | |||
装好系统后,如何评估系统的发垃圾和病毒能力?总不能自己给自己发垃圾邮件和病毒邮件吧。 | |||
http://www.gfi.com/emailsecuritytest/ | |||
我们可以通过GFI来测试我们邮件系统的发垃圾和病毒能力。 | |||
当你的邮箱验证通过后,他会发送垃圾邮件和病毒邮件到你的邮箱,你就可以检测到邮件系统的反垃圾和病毒查杀能力。 | |||
http://www.antispam-ufrj.pads.ufrj.br/ | |||
测试邮件服务器是否被设成公开转发站 | |||
http://www.abuse.net/relay.html | |||
===命令行管理postfix队列=== | |||
*查看队列 | |||
<pre> | |||
postqueue -p | |||
</pre> | |||
*删除队列邮件根据ID | |||
<pre> | |||
postsuper -d MessageID | |||
</pre> | |||
*根据发送者来删除队列邮件,替换 “[email protected]”就可以 | |||
<pre> | |||
mailq | tail +2 | awk ‘BEGIN { RS = “” } | |||
# $7=sender, $8=recipient1, $9=recipient2 | |||
{ if ($7 == “[email protected]” && $9 == “”) | |||
print $1 } | |||
‘ | tr -d ‘*!’ | postsuper -d - | |||
</pre> | |||
*根据收件人删除,替换[email protected] 就可以 | |||
<pre> | |||
mailq | tail +2 | awk ‘BEGIN { RS = “” } | |||
# $7=sender, $8=recipient1, $9=recipient2 | |||
{ if ($8 == “[email protected]” && $9 == “”) | |||
print $1 } | |||
‘ | tr -d ‘*!’ | postsuper -d - | |||
</pre> | |||
* 根据发生服务器的hostname来删除,替换掉 senderhostname | |||
<pre> | |||
mailq | grep senderhostname | awk ‘{ print $1′} | postsuper -d - | |||
</pre> | |||
*如果当前的系统队列很长,负担很重,我们可以把队列里的邮件先hold | |||
<pre> | |||
postsuper -h ALL | |||
</pre> | |||
当处理完后,再把队列移回来 | |||
<pre> | |||
postsuper -r ALL | |||
</pre> | |||
参考文章 | |||
http://www.faqforge.com/linux/server/manage-the-postfix-mailqueue-with-postsuper-postqueue-und-mailq/ | |||
===命令行测试邮件服务=== | |||
测试邮件,可以用客户端, 也可以使用命令行测试,这样更加直接. | |||
*BASE64编码的用户名密码 | |||
我们需要把我们的登录帐号和密码一起编码<br> | |||
user:[email protected]<br> | |||
pass: iredmail<br> | |||
<pre> | |||
# perl -MMIME::Base64 -e 'print encode_base64("www\@example.com\0www\@example.com\0iredmail")'; | |||
d3d3QGV4YW1wbGUuY29tAHd3d0BleGFtcGxlLmNvbQBpcmVkbWFpbA== | |||
</pre> | |||
*SMTP 登录并发送邮件 | |||
<pre> | |||
# telnet localhost 25 #在服务器上telnet到本地,下面的是正常输出 | |||
Trying ::1... | |||
Trying 127.0.0.1... | |||
Connected to localhost. | |||
Escape character is '^]'. | |||
220 u910.example.com ESMTP iRedMail (Ubuntu) | |||
ehlo example.com #握手 | |||
250-u910.example.com | |||
250-PIPELINING | |||
250-SIZE 15728640 | |||
250-ETRN | |||
250-STARTTLS | |||
250-AUTH PLAIN LOGIN | |||
250-AUTH=PLAIN LOGIN | |||
250-ENHANCEDSTATUSCODES | |||
250-8BITMIME | |||
250 DSN | |||
auth plain d3d3QGV4YW1wbGUuY29tAHd3d0BleGFtcGxlLmNvbQBpcmVkbWFpbA== # 输入base 64后的用户名和密码 | |||
235 2.7.0 Authentication successful | |||
mail from:<[email protected]> #使用 [email protected] 帐号对外发送邮件 | |||
250 2.1.0 Ok | |||
rcpt to:<[email protected]> #发送邮件到 [email protected] 这个邮箱 | |||
250 2.1.5 Ok | |||
data #输入data命令后,下面就是邮件的内容 | |||
354 End data with <CR><LF>.<CR><LF> | |||
to:[email protected] #这是邮件里显示的发送给谁。 | |||
from:[email protected] #那个帐号发送过来的 | |||
subject: test by telnet smtp #邮件的主题 | |||
test , just a test ,check the subject whetehr working. | |||
. #写完邮件后,输入一个点,回车,就表示邮件完成。 | |||
250 2.0.0 Ok: queued as B6B4820EC9 | |||
quit #退出 | |||
221 2.0.0 Bye | |||
Connection closed by foreign host. | |||
</pre> | |||
*pop3连接 | |||
可以在远程使用命令行或者本地来测试pop3 | |||
<pre> | |||
# telnet localhost 110 #登录110端口 | |||
Trying ::1... | |||
# | Trying 127.0.0.1... | ||
Connected to localhost. | |||
Escape character is '^]'. | |||
+OK Dovecot ready. | |||
user www@example.com #输入登录的邮件帐号 | |||
+OK | |||
pass iredmail #帐号的密码,这里直接输入密码就可以 | |||
+OK Logged in. | |||
list #查看邮箱里的邮件 | |||
+OK 4 messages: | |||
1 1182 | |||
2 6195 | |||
3 1588 | |||
4 878 | |||
. | |||
retr 1 #显示第一封邮件内容 | |||
quit #退出 | |||
+OK Logging out. | |||
Connection closed by foreign host. | |||
</pre> | |||
[[Category:服务器]] |
2014年5月9日 (五) 15:36的最新版本
iRedmail 组件
iRedMail主要是使用下面软件来构建邮件系统,下面是Ubuntu 10.04的软件版本。
- Apache 2.2.x
- PHP 5.3.x
- MySQL 5.1.x
- OpenLDAP 2.4.x
- Postfix 2.7.x ( MTA )
- Dovecot 1.2.x
- Amavisd 2.6.x
- ClamAV 0.9x
- SpamAssassin 3.2.x
- Policyd 1.8.x
- Pysieved 1.0
- Roundcube 0.7.2 (Webmail )
- phpMyAdmin 3.3
- phpLDAPadmin 1.2
- Awstats 6.9
组件的工作原理
amavisd-new 在这里的作用主要是:
- 负责调用 ClamAV 对邮件进行病毒扫描
- 负责调用 SpamAssassin 对邮件内容进行过滤
- 实现 DKIM 签名和验证功能,还有实现免责声明的功能。
Postfix组件
全部的组件 (图片来源 http://workaround.org/ispmail/lenny/bigpicture )
1: 当邮件发送到服务器的25端口,postfix接受连接,它会做一些基本检查
- 发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝
- 是否是授权用户,可以进行转发
- 接收者是否是服务器的用户,如果不是,马上拒绝
- 如果我们启用的灰名单,那么会拒绝邮件或者接收
2:postfix 把邮件通过10024端口交给amavis来处理,注意amavis,只会检查邮件而不会丢弃或者拒绝邮件。
3:amavis调用SpamAssassin检查邮件是否是spam,如果SpamAssassin认为邮件是垃圾邮件,会给邮件打上标记spam
4:amavis调用ClamAV,看邮件是否含有病毒
5:amavis把检查完的邮件,通过10025端口重新把邮件交回给postfix
6:postfix把邮件交给LDA(local delivery agent),LDA是负责本地邮件投放到用户的邮箱,(我们这里使用dovecot提供的LDA功能,而不是postfix提供的LDA)邮件会进入用户的邮箱,Dovecot会执行用户设置的filter,也就是Dovecot通过调用Sieve,放到相关的文件夹
7:Dovecot 把邮件以maildir的方式存放在硬盘上。
8: 用户使用邮件客户端,通过pop3或imap协议进行连接。webmail RoundCube,是通过imap的方式来读取邮件。
组件的选择,比较
linux下,对于开源软件来说,没有所谓像windows一样的邮件系统,你可以选择不同的组件,组成一个邮件系统,对于邮件来说,要实现一个功能,可能有多种组件,到底哪个最好,不同的组件间的如何搭配、组合,是一件非常头疼的事情。
网上的文档,组合也是非常多样,到底哪种是最好或者更优?文档不会介绍为什么选择这个组件的理由。一般的管理员很难判断。下面就是iRedMail选择组件的理由。
大家也可以参考这位老外的文章:http://workaround.org/ispmail 如果你细心查看这篇文档的几个版本,就会发现他的组件的不同和改进。现在他的组件,已经基本和iredmail是一样。从另外一个角度证明iRedMail的组件选择,是可以经得起考验的。可以肯定一点就是目前iredmail的功能,性能会比你照这个文档配置的效果更好。
MTA Postfix
linux比较有名的4大MTA,如果从功能上,应该都是可以满足你的需求,详细的比较,大家可以阅读http://shearer.org/MTA_Comparison
- Sendmail
MTA软件的很多先进功能都是在Sendmail上最先实现的。但Sendmail也有典型的历史问题,主要是整个程序的没有实现良好的模块化,运行时需要SID权限,以及配置文件复杂难懂。这些是阻碍Sendmail更好普及应用的一些客观问题。
- Qmail
Qmail是新生一代的MTA代表,实现了模块化设计,避免了SID问题,基本功能齐全,配置较Sendmail简单,而且用户也很广泛。但Qmail从2002年开发工作基本停止,版本停止更新,只能通过第三方的补丁来实现更多的功能,补丁程序也相对零乱,这些都是长期使用Qmail的用户或者邮件服务提供商不得不认真考虑的问题。另外,Qmail的扩展性并不是很好,经常需要补丁来完成功能的扩展。
- Exim
Ubuntu缺省的MTA,应该是非常不错,不过国内用户不多。
- Postfix
Postfix在设计上可以说是最为优美的,其实现了良好的模块化,邮件的处理流程是通过调用各个功能模块来完成,在效率、功能、可用性、扩展及安全等方面都考虑得比较充分。
MDA Dovecot
pop和imap的服务器,有Dovecot 和Courier 作为选择。目前很多教程,都是采用Courier,只是因为Courier文档比较多,历史比较久。
如果你关注一下,国外很多历史比较久邮件系统的方案,都开始从Courier转到Dovecot上。
Dovecot从2002年发布以来,性能远远超越Courier。
Postfix可以直接使用Dovecot的后台认证,不需要分开配置。(如果使用Courier,我们必须安装配置额外的认证软件,比如Saslauthd,配置这个,会是一个噩梦,如果出现问题,很难排错),并且Dovecot,可以很方便实现磁盘配额的功能。
Dovecot作为Courier的可替换组件,Dovecot在磁盘读写量上比Courier减少25%左右,内存占用也比Courier节省10%到70%不等。
http://www.cnbeta.com/articles/72682.htm
大家会发现,很多文档里,如果使用Counier,会介绍使用maildrop 作为LDA,也就是postfix把邮件交给maildrop,他负责投递到用户的邮箱。
如果我们使用Dovecot,那么就可以直接使用Dovecot带的LDA就可以。不需要额外的软件。
所以作为构建一个新的邮件服务器,Dovecot,肯定是最佳的选择,这个应该没有什么异议。
WebMail RoundCube
对于邮件系统来说,webmail是必不可少,修改密码,自动回复这些工作,必须登录webmail来设置。 开源的webmail,其实选择也很多。
- SquirrelMail
- horde
- Extmail
- atmail
- openwebmail
- RoundCube
RoundCube,算是webmail里后起之秀,从2005年开发发布。目前最新的版本0.51,已经支持插件的机制。现在开发的插件的社区很活跃。如果把所有的插件都装起来,那肯定是无敌。
对于开源的webmail,有一个很困惑国人的需求,当你在写邮件的时候,希望选择从通讯录里选择联系人。这个以前在任何的开源webmail里都是无法实现,甚至google的gmail也是最近才实现这个功能。
RoundCube 通过插件,已经完美实现了这个功能。
Policyd
灰名单,是对付垃圾邮件的一个有效的手段,很多文档介绍使用PostGrey来实现灰名单的功能。
Policyd,不但有灰名单的功能,还提供很多别的功能,可以大大提高反垃圾邮件的效果。有一点要注意的,目前iRedMail 使用的是policyd1.8的版本。大家可以参考 http://policyd.sourceforge.net/readme.html
OS Ubuntu
iRedMail 有一个重要的设计原则,尽可能使用发行版提供的包,尤其是官方提供技术支持和安全更新的包,这样做的好处是很明显。
- 升级方便
- 安全更新有保证
iRedMail目前支持RedHat,Debian,Ubuntu和Freebsd几个发行版,Ubuntu软件包的支持是最好的,从Ubuntu9.04开始,iRedmail,就基本全部采用Ubuntu官方提供支持和更新的软件包来构建整个邮件系统,除了几个web管理程序以外(web管理程序,你可以不使用)。
已经有用户,顺利从9.04升级到9.10,邮件系统,没有任何影响。在未来的10.04,也是不会受到任何的影响,这就是iRedMail 和Ubuntu结合强大的地方。
可以这样理解,使用Ubuntu提供的邮件相关的软件包,装完后,用iRedMail 的安装脚本,快速帮助你按照那些几十页的技术文档,1分钟内完成全部的配置。
很多用户经常问一个问题:如果iRedMail项目停止,我怎么办,以后升级怎么办?其实如果你使用任何的邮件系统,都可能会有这样的风险。
不过使用iredmail,就会例外,因为只有一种情况,Ubuntu停止开发,你才会受影响。只要Ubuntu,继续发展,你的邮件系统,就可以继续更新。因为你的所有的软件包,都是Ubuntu官方的提供的,他们是会保证持续更新和安全漏洞的修复。
内容过滤 SpamAssassin
防垃圾邮件,是邮件系统的基本功能,SpamAssassin,是最有名的,尤其是和Amavisd ClamAV结合起来,这是一个经得起考虑的组合。
对于内容过滤,其实还有一个选择:dspam,我没有使用过dspam,无法具体评价。
目前从iRedMail的客户部署情况,基本没有用户反映垃圾邮件过滤有问题。
SpamAssassin怎么管理,有后台可以登录吗?
amavisd-new
amavisd-new,可以理解成一个代理,Postfix把邮件交给他,他负责联系杀毒和反垃圾。
amavisd-new 在这里的作用主要是:
* 负责调用 ClamAV 对邮件进行病毒扫描 * 负责调用 SpamAssassin 对邮件内容进行过滤
如果大家看文档,还会发现有人使用maildrop,通过maildrop,maildrop也可以调用spamassassin和clamav,实现类似amavisd-new的功能。
大家可以阅读下面的文档,这是老外使用amavisd-new,ClamAV SpamAssassin的技术文档,那么就会明白为什么iredmail会选择这amavisd-new。 http://www200.pair.com/mecham/spam/
iRedMail 简介
iRedMail 是一套基于 GPL 发布的 Shell 脚本,目的是全自动安装和配置邮件服务所需要的组件,以减轻系统管理员的负担。它提供了一个基本的命令行下的用户交互界面(使用 dialog 程序实现),用户只需要简单地选择他所希望使用的组件,就可以在几分钟内(少于 3 分钟)部署好一台功能强大的邮件服务器。
iRedmail 使用到的邮件相关的软件包,都是采用发行版提供的软件包。
- iRedMail 官方中文支持论坛 http://www.iredmail.org/bbs
安装需求
iRedMail 目前支持以下Ubuntu版本:
OS | Version | Platform | iRedMail Version |
Ubuntu (presise, 12.04) | 12.04 | i386, amd64 | >= 0.8.0 |
Ubuntu (Luicd,11.04) | 10.04 | i386, amd64 | >= 0.6.1 |
- 生产中部署至少需要512MB 内存.
Downloading Ubuntu CD/DVD images via HTTP/FTP
准备
Hostname
这里说的 hostname 是指使用 'hostname -f' 命令打印出来的系统主机名,例如:
$ hostname -f mail.example.com
不管您的 Linux 系统是否作为公网服务器,我们都强烈建议您设置一个合适的主机名。
在 Ubuntu 系统中,主机名的设置涉及到两个文件:
- /etc/hostname: hostname 设置
- /etc/hosts: hostname <=> IP 地址对应
用你熟悉的编辑器编辑 /etc/hostname 文件
$cat /etc/hostname mail
编辑 / /etc/hosts 文件
$cat /etc/hosts 127.0.0.1 mail.example.com mail localhost.localdomain localhost
检查FQDN Name设置,
让hostname修改马上生效
#hostname -F /etc/hostname # hostname -f mail.example.com
设置源
只需要相应的发行版的'main' 和 'universe' , 使用安装系统的时候ubuntu缺省的源,就可以了。
开始安装iredmail
- 切换到root用户
# sudo su -
- 下载最新版本的iredmail,解压
- iredmail最新版本是iRedMail-0.8.4,请到www.iredmail.org下载。
- 对于中国用户:由于“iredmail.org”域名被中国大陆于2011年6月4日封锁,可通过其IP地址为“106.187.51.47”(不含引号)访问,在“iRedMail.sh”执行前请更换/ root/iRedMail- XYZ / PKGS / get_all.sh中所有的iredmail.org“为“106.187.51.47”(不含引号)。这是一个的Linode VPS托管在日本东京。
#wget http://iredmail.googlecode.com/files/iRedMail-0.7.0.tar.bz2 #tar jxvf iRedMail-0.7.0.tar.bz2 #cd iRedMail-0.7.0 #bash iRedMail.sh
- 可以开始执行主脚本,它会调用 'dialog' 程序引导用户配置邮件服务器
- iRedMail 安装进程的欢迎页面
- 选择用于存储所有邮件的目录(注意:由于所有邮件都将存储在这个目录,所以这个目录需要占用较多的磁盘空间)
LDAP
MYSQL
使用iredmail
安装完成后,一定要仔细阅读iredmail.tip,里面包括设置信息和帐号,下面各个应用的访问路径。这个是本安装的范例 (http://code.google.com/p/iredmail/source/browse/extra/iRedMail.tips )
- mysql 存储虚拟用户和domain 我们通过iRedAdmin 进行邮件domain,用户管理
- mysql 管理,可以通过phpmyadmin管理
- LDAP 存储虚拟用户和domain,我们通过iRedAdmin进行邮件domain,用户管理
- LDAP 的管理,可以通过phpldapadmin管理
webmail RoundCube
- 可以使用http://your_server/mail/ (or /webmail, /roundcube)访问webmail (注意,postmaster不是邮箱用户,不能登陆)
- 由于[email protected]是root的alias,所以会受到系统发的邮件,请细心阅读这两封邮件,iredmail.tip 包含所有的邮件设置的相关信息。
- 设置假期外出,需要新建过滤器
- 全局地址簿 (LDAP)
iRedAdmin
iRedAdmin开源版本是iredmail官方开发邮件后台管理,目前可以同时管理ldap和mysql。
大家也可以通过iredmail官方提供的demo (http://www.iredmail.org/admin_demo.html ) 深入了解iredadmin
- 登录iRedAdmin
可以使用https://your_server/iredadmin 访问iredadmin (注意是 https )
- 修改语言
- 控制台
- 域名管理
- 添加domain
- 用户管理,添加用户
- 管理员管理 添加管理员
phpLDAPAdmin
可以使用https://your_server/ldap 访问iredadmin (注意是 https )
- 登录phpLDAPAdmin
- 查看ldap
Awstats
可以使用https://your_server/awstats/awstats.pl 访问Awstats (注意是 https )
- 登录Awstats
- 如果希望查看邮件的流量,你需要修改你的链接,(https://your_server/awstats/awstats.pl?config=mail ) 在上面链接加上 ?config=mail
phpMyAdmin
可以使用https://your_server/phpmyadmin 访问phpMyAdmin (注意是 https )
DNS
DNS记录,需要你到你的域名托管商那里进行设置或者你自己管理DNS服务器。不少域名托管商不支持txt记录或者不支持DKIM记录,所以你就无法使用SPF和DKIM的功能。
DNS的修改,需要48小时以上才能生效。
国内的万网是不支持DKIM,目前新网是支持SPF和DKIM
MX记录
邮件的MX记录最好是指向机器A记录,尽量不要直接指向IP地址(不符合规范)。
- 添加A记录
mail.example.com 192.168.1.100
- 添加MX记录
example.com mail.example.com
SPF记录
- SPF 记录指向A主机记录
example.com. 3600 IN TXT "v=spf1 mx mx:mail.example.com -all"
- SPF 记录指向IP地址
example.com. 3600 IN TXT "v=spf1 ip4:192.168.1.100 -all"
DKIM记录
可以通过iredmail.tips 获得域名的DKIM,也可以在命令行下输入
# amavisd-new showkeys ; key#1, domain example.com, /var/lib/dkim/example.com.pem dkim._domainkey.example.com. 3600 TXT ( "v=DKIM1; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGNVMuQRKqYeySIzqTGTm3xRzF" "/ZzhmMnpZkEcVVjFAk+t7E388oFGu/knyh6KBKwpZxHUN5HoOYVjMudqaR2FcSvK" "z+joFj8Vh3rXoTLa1zHDyfD7hICzxdEgmQZ8MJM5rjPPrRGZXnPowNYDsd6nDJ86" "N38iFYU+jALBYDLBwQIDAQAB")
把上面记录添加到ISP的DNS记录
dkim._domainkey.example.com. v=DKIM1; p=MIGfMA0....(省略)DLBwQIDAQAB
添加完DNS记录后,如果记录生效,可以通过运行命令检测
# amavisd-new testkeys TESTING: dkim._domainkey.example.com => pass
检查DNS设置
下面有几种方法,可以帮助你检测DNS是否设置生效和正常工作
windows nslookup
C:\>nslookup Default Server: unknown Address: 192.168.1.1 > server 4.2.2.1 Default Server: vnsc-pri.sys.gtei.net Address: 4.2.2.1 > set type=mx > example.com Server: vnsc-pri.sys.gtei.net Address: 4.2.2.1 Non-authoritative answer: example.com MX preference = 20, mail exchanger = mail.example.com > set type=txt > example.com Server: vnsc-pri.sys.gtei.net Address: 4.2.2.1 Non-authoritative answer: example.com text = "v=spf1 ip4:192.168.1.100 -all" > dkim._domainkey.example.com Server: vnsc-pri.sys.gtei.net Address: 4.2.2.1 Non-authoritative answer: dkim._domainkey.example.com text = "v=DKIM1; p= MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsgZaIvYHAos2jbp3CHW0 AwrTnAEwV1p4EaZP/JuF8t1BETBVg6WJr3YWN5ijCpi9vnw96nmf/u5MgtbLwZ+AzDBkbOY7Jbb/hIO+ mpmmfdJAY3w8KoXLCuQKDysXOys45YtfJEj66s51EHH3W+iXPYw3I/NWHjY3a5/mXnk4XJQIDAQAB"
linux dig
如果你的机器没有dig命令,你需要安装
apt-get install dnsutils
这个时候,就可以使用dig命令
- MX记录
# host exmple.com example.com has address 192.168.1.100 example.com mail is handled by 10 mail.example.com.
- SPF记录
# dig txt hotmail.com ; <<>> DiG 9.4.2-P2 <<>> txt hotmail.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43130 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hotmail.com. IN TXT ;; ANSWER SECTION: hotmail.com. 3600 IN TXT "v=spf1 include:spf-a.hotmail.com include:spf-b.hotmail.com include:spf-c.hotmail.com include:spf-d.hotmail.com ~all" ;; Query time: 176 msec ;; SERVER: 64.71.161.8#53(64.71.161.8) ;; WHEN: Sat Dec 5 08:43:51 2009 ;; MSG SIZE rcvd: 157
- DKIM记录
#dig txt dkim._domainkey.example.com
web工具
- 黑名单检查
通过这个不但可以检查各种DNS设置,还可以检测到你的IP地址,是否已经给列入黑名单。
- 检测MX记录
http://zmailer.org/mxverify.html
- 检测SPF记录
- 测试spf和dkim记录
http://www.brandonchecketts.com/emailtest.php
网页里有一个邮箱地址,你可以通过安装过程中创建的第一个用户www,发送邮件给这个测试邮箱,你就可以马上看到结果
- 发邮件到gmail
查看发送过去的邮件的源码, 如果显示 dkim=pass 和 SPF: pass 就表示正常
Received-SPF: pass (google.com: domain of [email protected] designates 66.160.197.199 as permitted sender) client-ip=66.160.197.199; Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 66.160.197.199 as permitted sender) [email protected]; dkim=pass [email protected]
查看LOG
Linux下,如果出现问题,那么排错最佳的方式就是查看log,不过为了性能,有些应用,缺省下没有开启错误log,我们需要启用。
APACHE
# tail /var/log/apache2/error.log #查看log # tail -0f /var/log/apache2/error.log #实时查看log
OPENLDAP
当你采用ldap来验证用户,当用户登录出现问题的时候,你就需要查看ldap的log,看那个地方出错。
- 缺省的情况下,openldap的log没有启用,我们需要修改配置文件 /etc/ldap/slapd.conf
loglevel 256 # <-- change form 0 to 256
- 重新启动LDAP服务
/etc/init.d/slapd restart
- 查看log
tail /var/log/openldap.log
dovecot
当接收邮件有问题的时候,我们需要查看dovecot的log,
- 编辑/etc/dovecot/dovecot.conf
mail_debug = yes #把注释去掉
- 从新启动dovecot服务
# /etc/init.d/dovecot restart
- 查看log
# tail /var/log/dovecot.log
Sieve
当RoundCube里过滤器不工作或者有问题的情况下,你就需要查看sieve的log
# tail /var/log/sieve.log
Postfix
查看邮件发送的问题,就需要查看posfix Log
#tail /var/log/mail.log
Postfix 排错,还可以通过Postfix提供邮件队例队列管理工具:
postqueue -p 列出队列里的所有邮件 postsuper -d ID 删除一封邮件 postsuper -d ALL 删除所有邮件 postsuper –h ID 保留邮件 postsuper -r ALL 重新排例 postcat -q ID 显示邮件内容 postqueue -f 清空邮件
邮件客户端
iRedmail提供pop,imap和pops,imaps的连接,可以根据需要选择采用哪种方式
Protocol | Unencrypted port | TLS Port | SSL Port |
SMTP | 25 | 587 | 465 |
POP3 | 110 | 110 | 995 |
IMAP | 143 | 143 | 993 |
Outlook2007
Outlook 2003
- pop3 非加密
这个设置和outlook 2007是一样,参考上面设置就可以, pop使用110,smtp是25
- pop3 加密
注意端口,这是和outlook2007不同的地方,outlook2003 只支持SSL,导入证书,可以参考上面设置
- imap 非加密
这个和2007设置是一样,imap是143,smtp是25
- imap 加密
FAQ
这个faq会不定期更新,最新的FAQ,大家可以直接访问 http://www.iredmail.org/faq.html
邮件服务器同步备份,切换,群集,冗余
邮件系统的备份,可以考虑采用rsync, unison,如果数据量大,可以参考文章 http://blog.daviesliu.net/2008/04/24/sync/
实现邮件的群集,有很多方案,一般可以分为
采用共享存储 (多台服务器)负载均衡,每台服务器都在工作。通过这种方式,可以实现支撑更多的用户。
没有共享存储 (两台服务器)实现冗余,一台机器是闲着。
你可以把iredmail部署到这两种方案上,iRedMail官方网站提供这两种方案的技术支持。
- 采用共享存储,一般都是利用lvs
- 不采用共享存储,就可以采用DRBD+heardbeat 的方案
DRBD,简单理解,就是网络的raid1,实现两台服务器的镜像。具体的配置过程,大家可以参考 http://www.iredmail.org/bbs/topic1298-view.html
停用灰名单
灰名单,是有效阻止垃圾邮件的手段,原理是当一个新的邮箱地址发邮件过来,都会先拒绝2次,然后第三次才会接收下来。一般发垃圾邮件的人,因为队列太长,就不会再尝试投递。
灰名单会导致第一次发送延迟,不过第二次以后就没有问题。如果希望停止灰名单
编辑/etc/postfix-policyd.conf
Policyd v2 (codenamed "cluebringer")编辑/etc/cluebringer/cluebringer.conf
# 1=on 0=off GREYLISTING=0 #把1改成0
重新启动policy服务
# /etc/init.d/postfix-policyd restart
修改root的alias
iRedmail的安装过程,我们设置了root的alias,如果我们希望修改邮箱地址。
编辑/etc/postfix/aliases 改成你需要的邮箱地址。以后系统的警告邮件就会发送到新的邮箱。
# See man 5 aliases for format postmaster: root clamav: root root: [email protected] policyd: [email protected] amavis: root
修改后,需要运行下面命令才可以生效。
# postalias /etc/postfix/aliases
这个时候可以测试一下,给root发一封邮件,是否生效
cd iRedMail-0.5.1 mail -s "test" root < iRedMail.tips
添加免责声明
iRedmail 是通过Amavisd-new + alterMIME 实现出站的邮件都添加免责声明。alterMIME支持Per-domain,Sub-domain,Per-user添加免责声明,同时支持txt和html格式。缺省情况下,iRedMail没有启用。
- 编辑 /etc/amavis/conf.d/50-user 把注释去掉。启用免责声明的功能
# ------------ Disclaimer Setting --------------- # Uncomment this line to enable singing disclaimer in outgoing mails. $defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; #把注释去掉
- 创建一个test免责声明,这个声明会添加到所有的邮件里。如果希望每个domain或者每个用户不同声明,那么可以单独添加免责声明。存放的路径是/etc/postfix/disclaimer/
#echo 'Testing disclaimer.' > /etc/postfix/disclaimer/default.txt
- 重启amavisd服务
# /etc/init.d/amavis restart
这个时候,所有往外发送的邮件,都会在底部加上 'Testing disclaimer.'
集成Razor2和Pyzor
- 打开防火墙端口
Razor2:必须打开防火墙端口 2307/TCP
pyzor: 必须打开防火墙端口 24441/UDP
编辑/etc/default/iptables 文件
# http/https, smtp/smtps, pop3/pop3s, imap/imaps, ssh -A INPUT -p tcp -m multiport --dport 80,443,25,465,110,995,143,993,587, 465,22,2307,24441 -j ACCEPT # <-- Add 2307 24441
重启iptables服务
# /etc/init.d/iptables restart
- 安装Razor2
root@mail:~# apt-get install razor Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: razor 0 upgraded, 1 newly installed, 0 to remove and 24 not upgraded. Need to get 125kB of archives. After this operation, 549kB of additional disk space will be used. Get:1 http://archive.ubuntu.com jaunty/universe razor 1:2.85-1 [125kB] Fetched 125kB in 1s (99.4kB/s) Selecting previously deselected package razor. (Reading database ... 23030 files and directories currently installed.) Unpacking razor (from .../razor_1%3a2.85-1_amd64.deb) ... Setting up razor (1:2.85-1) ...
- 设置Razor2
root@mail:~# mkdir /var/lib/amavis/.razor; chown -Rf amavis:amavis /var/lib/amavis/.razor root@mail:~# root@mail:~# su amavis $ razor-admin -home=/var/lib/amavis/.razor -create $ razor-admin -home=/var/lib/amavis/.razor -discover $ razor-admin -home=/var/lib/amavis/.razor -register Register successful. Identity stored in /var/lib/amavis/.razor/identity-rupCWQ7Auy $ exit
- 安装Pyzor
# apt-get install pyzor Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: python-gdbm Suggested packages: python-gdbm-dbg The following NEW packages will be installed: python-gdbm pyzor 0 upgraded, 2 newly installed, 0 to remove and 24 not upgraded. Need to get 56.3kB of archives. After this operation, 336kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://archive.ubuntu.com jaunty/main python-gdbm 2.6.2-0ubuntu1 [18.5kB] Get:2 http://archive.ubuntu.com jaunty/universe pyzor 1:0.4.0+cvs20030201-8 [37.8kB] Fetched 56.3kB in 0s (57.4kB/s) Selecting previously deselected package python-gdbm. (Reading database ... 23094 files and directories currently installed.) Unpacking python-gdbm (from .../python-gdbm_2.6.2-0ubuntu1_amd64.deb) ... Selecting previously deselected package pyzor. Unpacking pyzor (from .../pyzor_1%3a0.4.0+cvs20030201-8_all.deb) ... Setting up python-gdbm (2.6.2-0ubuntu1) ... Setting up pyzor (1:0.4.0+cvs20030201-8) ...
- 设置pyzor
# mkdir /var/lib/amavis/.pyzor; chown amavis:amavis /var/lib/amavis/.pyzor # su amavis $ pyzor --homedir /var/lib/amavis/.pyzor discover /var/lib/python-support/python2.6/pyzor/__init__.py:11: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha /var/lib/python-support/python2.6/pyzor/client.py:10: DeprecationWarning: the multifile module has been deprecated since Python 2.5 import multifile downloading servers from http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x $ exit
- 编辑/etc/spamassassin/local.cf 在最末尾添加下面内容
use_razor2 1 score RAZOR2_CHECK 2.500 score PYZOR_CHECK 2.500
- 重启amavis服务
# /etc/init.d/amavis restart
卸载iRedMail
当你希望卸载或者重新安装iredmail,那么可以利用iRedMail提供的工具,快速卸载iredmail各个组件,进行重新安装
# cd iRedMail-0.5.1/tools/ # bash clear_iredmail.sh
按照提示进行就可以,当你重新安装的时候,你还是需要运行下载脚本,再运行安装脚本。
注:这个脚本已经不可用,原作者建议备份好数据,重新安装系统。
批量创建用户
iRedMail提供脚本,可以让用户快速添加用户
- MYSQL
你可以编辑create_mail_user_MySQL.sh,修改默认值,如果你安装的时候修改的邮件的存储路径,那么你必须修改脚本的 STORAGE_BASE_DIRECTORY
创建邮箱用户的缺省密码是和用户名相同
# cd iRedMail-0.5.1/tools/ # bash create_mail_user_MySQL.sh exmple.com user1 user2 user3
这个时候,会创建output.sql 文件
# mysql -uroot -p mysql> USE vmail; mysql> SOURCE /path/to/output.sql;
- LDAP
使用create_mail_user_OpenLDAP.sh脚本,可以快速创建ldap的邮件用户,我们需要修改脚本
创建邮箱用户的缺省密码是和用户名相同
STORAGE_BASE_DIRECTORY="/var/vmail/vmail01" #如果你安装的时候修改的邮件的存储路径 LDAP_SUFFIX="dc=iredmail,dc=org" #你的ldap SUFFIX BINDPW='passwd' #ldap管理员cn=manager 密码
运行脚本,创建用户
# bash create_mail_user_OpenLDAP.sh example.com user1 user2
支持大附件
要注意的是:下面的设置,是可以让你的服务器是可以发送大附件,也需要对方的服务器能够接收大附件,否则还是无法发送出去。
- 客户端发送大附件
如果你是希望邮件客户端发送大附件,那么你只需要运行
# postconf -e message_size_limit='104857600' #把附件增加到100m
重启postfix服务
# /etc/init.d/postfix restart
- webmail
如果希望webmail,发送大附件,那么你还需要多修改2个地方
1:编辑/etc/php5/apache2/php.ini 文件
upload_max_filesize = 100M; post_max_size = 100M;
2:修改/usr/share/apache2/roundcube/.htaccess 文件
php_value upload_max_filesize 100M php_value post_max_size 100M
重启apache服务
# /etc/init.d/apache2 restart
停用Amavisd + ClamAV + SpamAssassin
如果希望停用杀毒和发垃圾的功能,编辑/etc/postfix/main.cf 文件,到把最底下的这行注释掉
content_filter = smtp-amavis:[127.0.0.1]:10024
这个时候,postfix接收到的邮件,就不会再交给amavis处理,就可以把amavisd, clamd, freshclam服务停止。不过要注意的是这个时候DKIM的功能,也是无法使用,因为iredmail的DKIM是通过amavis来实现的。
rolaod postifx服务
#update-rc.d amavis purge #update-rc.d clamav purge # /etc/init.d/postfix reload
Fetchmail
目前iRedMail还没有集成fetchmail的功能,如果你需要使用fetchmail,你可以自己集成
- 安装fetchmail
apt-get install fetchmail
- 设置fetchmail daemon运行修改/etc/default/fetchmail 文件
START_DAEMON=yes #把no改为yes
- 创建/etc/fetchmailrc 文件,添加下面的内容
set daemon 300 #5分钟取一次邮件 set syslog set postmaster root set no bouncemail defaults: timeout 300 antispam -1 batchlimit 100 #用户:shakechen 也可以是 [email protected] 密码是:12345678 本地的邮箱:[email protected] poll pop3.126.com protocol POP3 user shakechen there with password 12345678 is [email protected] here
最后一行意思是把126邮箱里的用户的邮件,投递到本地的邮箱帐号 [email protected]
- 设置/etc/fetchmailrc 文件权限
chmod 600 /etc/fetchmailrc chown fetchmail /etc/fetchmailrc
- 重启服务
/etc/init.d/fetchmail start
- 查看log
# tail /var/log/syslog Dec 7 16:01:36 mail fetchmail[4179]: 723 messages (723 seen) for shakechen at pop3.126.com (36923210 octets). Dec 7 16:01:37 mail fetchmail[4179]: sleeping at Mon Dec 7 16:01:37 2009 for 30 seconds Dec 7 16:02:07 mail fetchmail[4179]: awakened at Mon Dec 7 16:02:07 2009 Dec 7 16:02:08 mail fetchmail[4179]: 723 messages (723 seen) for shakechen at pop3.126.com (36923210 octets). Dec 7 16:02:09 mail fetchmail[4179]: sleeping at Mon Dec 7 16:02:09 2009 for 30 seconds
创建新的SSL key
如果你修改了计算机名字或者希望使用自己的信息创建自己的ssl key。
- 下载iredmail提供的脚本
# wget http://iredmail.googlecode.com/hg/iRedMail/tools/generate_ssl_keys.sh
- 编辑脚本里的你希望修改的相关信息
# SSL key. export SSL_CERT_FILE="${ROOTDIR}/certs/iRedMail_CA.pem" export SSL_KEY_FILE="${ROOTDIR}/private/iRedMail.key" export TLS_COUNTRY='CN' export TLS_STATE='GuangDong' export TLS_CITY='ShenZhen' export TLS_COMPANY="${HOSTNAME}" export TLS_DEPARTMENT='IT' export TLS_HOSTNAME="${HOSTNAME}" export TLS_ADMIN="root@${HOSTNAME}"
- 执行脚本
# bash generate_ssl_keys.sh SSL keys were generated: - /root/certs/iRedMail_CA.pem - /root/private/iRedMail.key
- 把以前的证书备份一下,把新证书复制到下面两个目录下。
/etc/ssl/private/iRedMail.key /etc/ssl/certs/iRedMail_CA.pem
SPAM邮件进入垃圾箱
如果用户是使用邮件客户端,是无法收取到junk的邮件,所以iredmail缺省是让spam的邮件进入收件箱。如果我们希望让spam的邮件,不进入收件箱,直接存在垃圾邮箱的文件夹里。
# cd /var/vmail/sieve # cp dovecot.sieve.sample dovecot.sieve
- 重启dovecot 服务
# /etc/init.d/dovecot restart
如何修改hostname
如果我们装完iremdail后,希望修改hostname(FQDN),那么我们需要修改下面相关的内容。
- 修改hostname in /etc/hostname and /etc/hosts
- 产生新的证书 参考上面的faq
- 修改 hostname in amavis.conf
- 修改 hostname in dovecot-quota-warning.sh
- 修改 hostname in posfix/main.cf
- cp -Rf /etc /var/spool/postfix
检测系统的反垃圾和病毒能力
装好系统后,如何评估系统的发垃圾和病毒能力?总不能自己给自己发垃圾邮件和病毒邮件吧。
http://www.gfi.com/emailsecuritytest/
我们可以通过GFI来测试我们邮件系统的发垃圾和病毒能力。
当你的邮箱验证通过后,他会发送垃圾邮件和病毒邮件到你的邮箱,你就可以检测到邮件系统的反垃圾和病毒查杀能力。
http://www.antispam-ufrj.pads.ufrj.br/
测试邮件服务器是否被设成公开转发站
http://www.abuse.net/relay.html
命令行管理postfix队列
- 查看队列
postqueue -p
- 删除队列邮件根据ID
postsuper -d MessageID
- 根据发送者来删除队列邮件,替换 “[email protected]”就可以
mailq | tail +2 | awk ‘BEGIN { RS = “” } # $7=sender, $8=recipient1, $9=recipient2 { if ($7 == “[email protected]” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d -
- 根据收件人删除,替换[email protected] 就可以
mailq | tail +2 | awk ‘BEGIN { RS = “” } # $7=sender, $8=recipient1, $9=recipient2 { if ($8 == “[email protected]” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d -
- 根据发生服务器的hostname来删除,替换掉 senderhostname
mailq | grep senderhostname | awk ‘{ print $1′} | postsuper -d -
- 如果当前的系统队列很长,负担很重,我们可以把队列里的邮件先hold
postsuper -h ALL
当处理完后,再把队列移回来
postsuper -r ALL
命令行测试邮件服务
测试邮件,可以用客户端, 也可以使用命令行测试,这样更加直接.
- BASE64编码的用户名密码
我们需要把我们的登录帐号和密码一起编码
user:[email protected]
pass: iredmail
# perl -MMIME::Base64 -e 'print encode_base64("www\@example.com\0www\@example.com\0iredmail")'; d3d3QGV4YW1wbGUuY29tAHd3d0BleGFtcGxlLmNvbQBpcmVkbWFpbA==
- SMTP 登录并发送邮件
# telnet localhost 25 #在服务器上telnet到本地,下面的是正常输出 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 u910.example.com ESMTP iRedMail (Ubuntu) ehlo example.com #握手 250-u910.example.com 250-PIPELINING 250-SIZE 15728640 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN auth plain d3d3QGV4YW1wbGUuY29tAHd3d0BleGFtcGxlLmNvbQBpcmVkbWFpbA== # 输入base 64后的用户名和密码 235 2.7.0 Authentication successful mail from:<[email protected]> #使用 [email protected] 帐号对外发送邮件 250 2.1.0 Ok rcpt to:<[email protected]> #发送邮件到 [email protected] 这个邮箱 250 2.1.5 Ok data #输入data命令后,下面就是邮件的内容 354 End data with <CR><LF>.<CR><LF> to:[email protected] #这是邮件里显示的发送给谁。 from:[email protected] #那个帐号发送过来的 subject: test by telnet smtp #邮件的主题 test , just a test ,check the subject whetehr working. . #写完邮件后,输入一个点,回车,就表示邮件完成。 250 2.0.0 Ok: queued as B6B4820EC9 quit #退出 221 2.0.0 Bye Connection closed by foreign host.
- pop3连接
可以在远程使用命令行或者本地来测试pop3
# telnet localhost 110 #登录110端口 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user [email protected] #输入登录的邮件帐号 +OK pass iredmail #帐号的密码,这里直接输入密码就可以 +OK Logged in. list #查看邮箱里的邮件 +OK 4 messages: 1 1182 2 6195 3 1588 4 878 . retr 1 #显示第一封邮件内容 quit #退出 +OK Logging out. Connection closed by foreign host.