iredmail使用tips

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


Image:Iredmail35.png

添加完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工具

  • 黑名单检查

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 就表示正常

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

FAQ

这个faq会不定期更新,最新的FAQ,大家可以直接访问 http://www.iredmail.org/faq.html

邮件服务器同步备份,切换,群集,冗余

邮件系统的备份,可以考虑采用rsync, unison,如果数据量大,可以参考文章 http://blog.daviesliu.net/2008/04/24/sync/

停用灰名单

灰名单,是有效阻止垃圾邮件的手段,原理是当一个新的邮箱地址发邮件过来,都会先拒绝2次,然后第三次才会接收下来。一般发垃圾邮件的人,因为队列太长,就不会再尝试投递。

灰名单会导致第一次发送延迟,不过第二次以后就没有问题。如果希望停止灰名单

编辑/etc/postfix-policyd.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.'

卸载 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

集成DNSBL

编辑/etc/postfix/main.cf 文件,在smtpd_recipient_restrictions 下添加下面内容

 

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,

重启postfix服务

# /etc/init.d/postfix reload

 

 停用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),那么我们需要修改下面相关的内容。

  1. 修改hostname in /etc/hostname and /etc/hosts
  2. 产生新的证书 参考上面的faq
  3. 修改 hostname in amavis.conf
  4. 修改 hostname in dovecot-quota-warning.sh
  5. 修改 hostname in posfix/main.cf
  6. 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
mailq | tail +2 | awk ‘BEGIN { RS = “” } # $7=sender, $8=recipient1, $9=recipient2 { if ($7 == “[email protected]” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d -
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

参考文章 http://www.faqforge.com/linux/server/manage-the-postfix-mailqueue-with-postsuper-postqueue-und-mailq/


命令行测试邮件

测试邮件,可以用客户端, 也可以使用命令行测试,这样更加直接.

  • 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] 帐号对外发送邮件 250 2.1.0 Ok rcpt to: #发送邮件到 [email protected] 这个邮箱 250 2.1.5 Ok data #输入data命令后,下面就是邮件的内容 354 End data with . 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.

 

http://hi.baidu.com/tentenbear/blog/item/7ab07b51476b31768435242c.html

你可能感兴趣的:(iredmail使用tips)