查看“IRedMail”的源代码
来自Ubuntu中文
←
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.5.1 (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 是一套基于 GPL 发布的 Shell 脚本,目的是全自动安装和配置邮件服务所需要的组件,以减轻系统管理员的负担。它提供了一个基本的命令行下的用户交互界面(使用 dialog 程序实现),用户只需要简单地选择他所希望使用的组件,就可以在几分钟内(少于 3 分钟)部署好一台功能强大的邮件服务器。 iRedmail 使用到的邮件相关的软件包,都是采用发行版提供的软件包。 *iRedMail 官方中文支持论坛 http://www.iredmail.org/bbs * 代码下载 http://code.google.com/iredmail == 安装需求 == iRedMail 目前支持以下Ubuntu版本: {| cellspacing="0" border="1" |- | OS | Version | Platform | iRedMail Version |- | Ubuntu (oneiric, 11.10) | 11.10 | i386, amd64 | >= 0.7.4 |- | Ubuntu (Luicd,11.04) | 10.04 | i386, amd64 | >= 0.6.1 |- | Ubuntu (Karmic, 9.10) | 9.10 | i386, amd64 | >= 0.5.0 |- | Ubuntu (Jaunty, 9.04) | 9.04 | i386, amd64 | >= 0.5.0 |- | Ubuntu (Hardy, 8.04 LTS) | 8.04 TLS | i386, amd64 | >= 0.5.0 |} *生产中部署至少需要512MB 内存. [http://www.debian.org/CD/http-ftp/ 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,解压 <pre> #wget http://iredmail.googlecode.com/files/iRedMail-0.7.0.tar.bz2 #tar jxvf iRedMail-0.7.0.tar.bz2 #cd iRedMail-07.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]] *由于www@example.com是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 www@example.com 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 www@example.com designates 66.160.197.199 as permitted sender) smtp.mail=www@example.com; dkim=pass header.i=@example.com </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 <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: www@18demo.com policyd: www@18demo.com 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> ===集成DNSBL=== 编辑/etc/postfix/main.cf 文件,在smtpd_recipient_restrictions 下添加下面内容 <pre> smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_policy_service inet:127.0.0.1:10031 ##添加下面内容 reject_rhsbl_sender dsn.rfc-ignorant.org, reject_rbl_client dnsbl.njabl.org, reject_rbl_client dnsbl.ahbl.org, reject_rbl_client bl.spamcop.net, reject_rbl_client zen.spamhaus.org, </pre> 重启postfix服务 <pre> # /etc/init.d/postfix reload </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 也可以是 shakechen@126.com 密码是:12345678 本地的邮箱:www@18demo.com poll pop3.126.com protocol POP3 user shakechen there with password 12345678 is www@18demo.com here </pre> 最后一行意思是把126邮箱里的用户的邮件,投递到本地的邮箱帐号 www@18demo.com *设置/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> *根据发送者来删除队列邮件,替换 “info@otherdomain.com”就可以 <pre> mailq | tail +2 | awk ‘BEGIN { RS = “” } # $7=sender, $8=recipient1, $9=recipient2 { if ($7 == “info@otherdomain.com” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d - </pre> *根据收件人删除,替换you@yourdomain.com 就可以 <pre> mailq | tail +2 | awk ‘BEGIN { RS = “” } # $7=sender, $8=recipient1, $9=recipient2 { if ($8 == “you@yourdomain.com” && $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:www@example.com<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:<www@example.com> #使用 www@example.com 帐号对外发送邮件 250 2.1.0 Ok rcpt to:<shake.chen@gmail.com> #发送邮件到 shake.chen@gmail.com 这个邮箱 250 2.1.5 Ok data #输入data命令后,下面就是邮件的内容 354 End data with <CR><LF>.<CR><LF> to:shake.chen@gmail.com #这是邮件里显示的发送给谁。 from:www@example.com #那个帐号发送过来的 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:服务器]]
返回
IRedMail
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息