邮件服务器使用的点点滴滴及问题汇总
2012-05-16 15:16
267 查看
公司上线的邮件服务器也有段时间了,在这里记录下体验,不为别的,只为曾经有过
--------by Tony
下面介绍邮件上线前后的点点滴滴及问题汇总:
一、首先说说extman后台的界面,字段太少了,假如公司规模在500+以上,又有各地办事处的时候,会给后续的管理工作带来很大的不便,所以有必要在后台显示新增字段(如:中文名、部门、公司)《注:在网上看到邓卫的一篇帖子,很不错,推荐!》后面会上传附件!
二、再一个就是别名,企业经常会群发邮件,这时候就利用别名实现了一个邮件组的功能,可每次在新增用户的时候不能同时指定别名,这点也遗憾,所以看到论坛上的牛人写的教程很不错,记录下来,后面把附件奉上。
三.别名的功能是很不错,但用不好,会被领导批的,所以对有的特殊的邮件组要加以权限的控制,比如all@abc.com,指定只有公司特别的人才可能发送,不然要是有人发个垃圾邮件给所有人,后果不堪设想。
实现方法如下:
使用postfix的发信和收信人策略实现邮件列表的使用控制,分享之。
1、创建local_recipient和local_domains两个文件
[root@a postfix]# pwd
/etc/postfix
[root@a postfix]# cat local_recipient
allstaff@a.com local_only
[root@a postfix]# cat local_domains
a.com OK
127.0.0.1 OK
youip OK
2、产生db文件,如果修改过/etc/postfix/local_recipient和/etc/postfix/local_domains文件内容,需要重新执行下面的命令才可生效。
postmap hash:/etc/postfix/local_recipient
postmap hash:/etc/postfix/local_domains
3、在main.cf里加入两行
smtpd_restriction_classes = local_only
local_only = check_sender_access hash:/etc/postfix/local_domains, reject
4、在main.cf里给smtpd_sender_restrictions加个规则check_recipient_access hash:/etc/postfix/local_recipient,结果如下:
smtpd_sender_restrictions =
permit_mynetworks,
reject_sender_login_mismatch,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
reject_unknown_sender_domain,
check_recipient_access hash:/etc/postfix/local_recipient
5、重启postfix。
此时非a.com用户无法给allstaff发信。
弹回信息如下:
你发送到allstaff@a.com的邮件由于以下原因被退回 :
allstaff@a.com SMTP error, RCPT TO: 554 5.7.1 <allstaff@a.com>: Recipient address rejected: Access denied
四:还有个问题就是有的时候发送给邮件组又同时发送给个人,这个人又包含在这个邮件组里,会收到两封一样的邮件,很不好,网上搜刮只要修改main.cf,添加一条参数即可!
实现方法:#vim /etc/postfix/main.cf
enable_original_recipient = no
最后别忘记postfix restart
五:我们企业里面有人发送一些非法或者垃圾邮件,我们怎么进行监控呢,其实很简单,只需在main.cf里加一个参数,实现每一封发到服务器的邮件都密送一份给指定邮箱,我们就可以实现邮件的监控了。
实现方法:#vim /etc/postfix/main.cf
always_bcc = backup@abc.com
最后别忘记postfix restart 这样每一封邮件都会密送一封给backup@abc.com了,用户是察觉不到,但会在服务器mailog里产生日志
六、附上常用的邮箱管理命令:
#postsuper -d ID 删除特定邮件队列
#postsuper -d ALL 删除所有邮件队列
#mailq 查看所有邮件队列
#postfix flush 立即投递队列中所有邮件(慎用)
#postfix check 修复队列以及任何权限错误
#tail -f /var/log/maillog 查看邮件系统日志
七、企业人员太多,邮箱帐号记不住?让全局邮件列表来帮你,在webmail写邮件时不需要记住对方的邮箱帐号,直接选中即可。
实现方法: #cd $/extmail/tools
#vim makeglobabook.pl
#!/usr/bin/perl -w
#
# makeglobabook.pl
# make extmail globa book for mysql server.
# ver 0.2
use strict;
use DBI;
use IO::File;
use lib "../libs";
use Ext;
use POSIX qw(strftime);
use vars qw(@ISA $usercfg $sysconfig);
my $gbook="../globabook.cf";
my $time = strftime ("%Y\-%m\-%d\_%H\:%M\:%S", localtime);
my $app = Ext->new( config => '../webmail.cf' );
system("mv $gbook $gbook.$time") if -f $gbook;
my $dbuser = $Ext::Cfg{SYS_MYSQL_USER};
my $dbpassword = $Ext::Cfg{SYS_MYSQL_PASS};
my $dbname = $Ext::Cfg{SYS_MYSQL_DB};
my $dbh = DBI->connect("dbi:mysql:database=$dbname",$dbuser,$dbpassword)
or die "Can not connect DB server!\n";
my $query=qq~SELECT `username`,`name` FROM mailbox ~;
my $sth=$dbh->prepare($query);
$sth->execute();
my $fh=IO::File->new(">$gbook");
print $fh "Name,Mail,Company,Phone\n";
while (my @row=$sth->fetchrow_array()){
print $fh "\"$row[1]\",\"$row[0]\"\n";
}
#chmod 755 makeglobabook.pl
#./makeglobabook.pl 就会更新上一级目录的globabook.cf文件了。可放入crontab中定期执行
八、搭建完以后的性能优化,应对500+用户的环境(extmail论坛牛人发的)
1、修改/usr/lib/courier-imap/etc/pop3d
MAXDAEMONS=512
MAXPERIP=9000
2、修改/etc/authlib/authdaemonrc
daemons=256
3、修改/etc/amavisd.conf
$max_servers = 50;
4、修改/usr/sbin/apachectl
HTTPD='/usr/sbin/httpd.worker'
5、修改/etc/httpd/conf/httpd.conf
<IfModule worker.c>
StartServers 10
MaxClients 1500
ServerLimit 100
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
6、修改/etc/clamd.conf
MaxThreads 50
7、修改/etc/my.cnf
max_connections=2048
8、去除rar打包exe会被ban的问题
编辑/etc/amavisd.conf,把$banned_filename_re = new_RE 这段内容相应的修改下
如果你知道该重启哪些服务,就重启这些服务,不清楚的话重启下系统就好。
9、加强发信人限制策略
编辑/etc/postfix/master.cf,把-o smtpd_client_restrictions=permit_sasl_authenticated,reject这行注释去掉。
九、以下是建议:
1、刚上线的邮件服务器特别是迁移的服务器,上线后先把fail2ban服务关闭,这是一个防暴力破解的软件,要是不停的话,局域网内有员工密码输错了,次数超过阀值就会把局域网的公网ip列入临时黑名单(fail2ban实际就是调用iptables来工作的),所以建议临时关闭,等服务器稳定后再开启。
#/etc/init.d/fail2ban stop
2、dnsbl列表:这是个实时黑名单列表,但里面的绝大数列表都不适合在国内使用,所以建议关闭。
#vim /usr/local/slockd/config/plugin.cf
修改dnsbl_plugin = no
3、spf检查:也是防垃圾邮件的,检查对方是否具有spf记录,没有则拒绝,因有的邮件服务器确实没有做这个记录,只做了ip反解,所以在这里我把这个检查关了,当然,如果对垃圾邮件要求较高,可以不关
#vim /usr/local/slockd/config/plugin.cf
修改spf_plugin = no
4、greylist列表:灰名单,容易误判,所以关闭
#vim /usr/local/slockd/config/plugin.cf
修改greylist_plugin = no
以上只是个人思想,请不要果断如此做。
十、维护工作:
1、维护工作离不开观察日志,因为只有看日志才有可能知道是什么问题,这就带来个问题,时间越来查日志就越慢,日志文件也会越来越大,所以可以考虑做日志轮询,每天生成一个日志文件,这样便于查询。(感谢同事小军:自动化的高手)
实现方法:vim logrotate.sh
#!/bin/bash
log_files=('/var/log/maillog')
log_date=`date -d "-1 day" +"%Y-%m-%d"`
rm_log=`date -d "-90 day" +"%Y-%m-%d"`
for log in "${log_files[@]}"
do
if [ -f "$log" ];then
cp ${log} ${log}.${log_date}
cat /dev/null >${log}
fi
if [ -f "${log}.${rm_log}" ];then
rm -f "${log}.${rm_log}"
fi
done
放到crontab里,夜里定期执行即可
2、日志还有就是过滤日志,把很关键的字段过滤出来方便查询问题
cat /var/log/maillog |grep reject
暂时想到这么多,后续继续补充~
整理完不容易,唉,只为自己回头能看见~
---date 2012.05.16
本文出自 “____哊.時^随记” 博客,请务必保留此出处http://xtony.blog.51cto.com/3964396/864898
--------by Tony
下面介绍邮件上线前后的点点滴滴及问题汇总:
一、首先说说extman后台的界面,字段太少了,假如公司规模在500+以上,又有各地办事处的时候,会给后续的管理工作带来很大的不便,所以有必要在后台显示新增字段(如:中文名、部门、公司)《注:在网上看到邓卫的一篇帖子,很不错,推荐!》后面会上传附件!
二、再一个就是别名,企业经常会群发邮件,这时候就利用别名实现了一个邮件组的功能,可每次在新增用户的时候不能同时指定别名,这点也遗憾,所以看到论坛上的牛人写的教程很不错,记录下来,后面把附件奉上。
三.别名的功能是很不错,但用不好,会被领导批的,所以对有的特殊的邮件组要加以权限的控制,比如all@abc.com,指定只有公司特别的人才可能发送,不然要是有人发个垃圾邮件给所有人,后果不堪设想。
实现方法如下:
使用postfix的发信和收信人策略实现邮件列表的使用控制,分享之。
1、创建local_recipient和local_domains两个文件
[root@a postfix]# pwd
/etc/postfix
[root@a postfix]# cat local_recipient
allstaff@a.com local_only
[root@a postfix]# cat local_domains
a.com OK
127.0.0.1 OK
youip OK
2、产生db文件,如果修改过/etc/postfix/local_recipient和/etc/postfix/local_domains文件内容,需要重新执行下面的命令才可生效。
postmap hash:/etc/postfix/local_recipient
postmap hash:/etc/postfix/local_domains
3、在main.cf里加入两行
smtpd_restriction_classes = local_only
local_only = check_sender_access hash:/etc/postfix/local_domains, reject
4、在main.cf里给smtpd_sender_restrictions加个规则check_recipient_access hash:/etc/postfix/local_recipient,结果如下:
smtpd_sender_restrictions =
permit_mynetworks,
reject_sender_login_mismatch,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
reject_unknown_sender_domain,
check_recipient_access hash:/etc/postfix/local_recipient
5、重启postfix。
此时非a.com用户无法给allstaff发信。
弹回信息如下:
你发送到allstaff@a.com的邮件由于以下原因被退回 :
allstaff@a.com SMTP error, RCPT TO: 554 5.7.1 <allstaff@a.com>: Recipient address rejected: Access denied
四:还有个问题就是有的时候发送给邮件组又同时发送给个人,这个人又包含在这个邮件组里,会收到两封一样的邮件,很不好,网上搜刮只要修改main.cf,添加一条参数即可!
实现方法:#vim /etc/postfix/main.cf
enable_original_recipient = no
最后别忘记postfix restart
五:我们企业里面有人发送一些非法或者垃圾邮件,我们怎么进行监控呢,其实很简单,只需在main.cf里加一个参数,实现每一封发到服务器的邮件都密送一份给指定邮箱,我们就可以实现邮件的监控了。
实现方法:#vim /etc/postfix/main.cf
always_bcc = backup@abc.com
最后别忘记postfix restart 这样每一封邮件都会密送一封给backup@abc.com了,用户是察觉不到,但会在服务器mailog里产生日志
六、附上常用的邮箱管理命令:
#postsuper -d ID 删除特定邮件队列
#postsuper -d ALL 删除所有邮件队列
#mailq 查看所有邮件队列
#postfix flush 立即投递队列中所有邮件(慎用)
#postfix check 修复队列以及任何权限错误
#tail -f /var/log/maillog 查看邮件系统日志
七、企业人员太多,邮箱帐号记不住?让全局邮件列表来帮你,在webmail写邮件时不需要记住对方的邮箱帐号,直接选中即可。
实现方法: #cd $/extmail/tools
#vim makeglobabook.pl
#!/usr/bin/perl -w
#
# makeglobabook.pl
# make extmail globa book for mysql server.
# ver 0.2
use strict;
use DBI;
use IO::File;
use lib "../libs";
use Ext;
use POSIX qw(strftime);
use vars qw(@ISA $usercfg $sysconfig);
my $gbook="../globabook.cf";
my $time = strftime ("%Y\-%m\-%d\_%H\:%M\:%S", localtime);
my $app = Ext->new( config => '../webmail.cf' );
system("mv $gbook $gbook.$time") if -f $gbook;
my $dbuser = $Ext::Cfg{SYS_MYSQL_USER};
my $dbpassword = $Ext::Cfg{SYS_MYSQL_PASS};
my $dbname = $Ext::Cfg{SYS_MYSQL_DB};
my $dbh = DBI->connect("dbi:mysql:database=$dbname",$dbuser,$dbpassword)
or die "Can not connect DB server!\n";
my $query=qq~SELECT `username`,`name` FROM mailbox ~;
my $sth=$dbh->prepare($query);
$sth->execute();
my $fh=IO::File->new(">$gbook");
print $fh "Name,Mail,Company,Phone\n";
while (my @row=$sth->fetchrow_array()){
print $fh "\"$row[1]\",\"$row[0]\"\n";
}
#chmod 755 makeglobabook.pl
#./makeglobabook.pl 就会更新上一级目录的globabook.cf文件了。可放入crontab中定期执行
八、搭建完以后的性能优化,应对500+用户的环境(extmail论坛牛人发的)
1、修改/usr/lib/courier-imap/etc/pop3d
MAXDAEMONS=512
MAXPERIP=9000
2、修改/etc/authlib/authdaemonrc
daemons=256
3、修改/etc/amavisd.conf
$max_servers = 50;
4、修改/usr/sbin/apachectl
HTTPD='/usr/sbin/httpd.worker'
5、修改/etc/httpd/conf/httpd.conf
<IfModule worker.c>
StartServers 10
MaxClients 1500
ServerLimit 100
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
6、修改/etc/clamd.conf
MaxThreads 50
7、修改/etc/my.cnf
max_connections=2048
8、去除rar打包exe会被ban的问题
编辑/etc/amavisd.conf,把$banned_filename_re = new_RE 这段内容相应的修改下
如果你知道该重启哪些服务,就重启这些服务,不清楚的话重启下系统就好。
9、加强发信人限制策略
编辑/etc/postfix/master.cf,把-o smtpd_client_restrictions=permit_sasl_authenticated,reject这行注释去掉。
九、以下是建议:
1、刚上线的邮件服务器特别是迁移的服务器,上线后先把fail2ban服务关闭,这是一个防暴力破解的软件,要是不停的话,局域网内有员工密码输错了,次数超过阀值就会把局域网的公网ip列入临时黑名单(fail2ban实际就是调用iptables来工作的),所以建议临时关闭,等服务器稳定后再开启。
#/etc/init.d/fail2ban stop
2、dnsbl列表:这是个实时黑名单列表,但里面的绝大数列表都不适合在国内使用,所以建议关闭。
#vim /usr/local/slockd/config/plugin.cf
修改dnsbl_plugin = no
3、spf检查:也是防垃圾邮件的,检查对方是否具有spf记录,没有则拒绝,因有的邮件服务器确实没有做这个记录,只做了ip反解,所以在这里我把这个检查关了,当然,如果对垃圾邮件要求较高,可以不关
#vim /usr/local/slockd/config/plugin.cf
修改spf_plugin = no
4、greylist列表:灰名单,容易误判,所以关闭
#vim /usr/local/slockd/config/plugin.cf
修改greylist_plugin = no
以上只是个人思想,请不要果断如此做。
十、维护工作:
1、维护工作离不开观察日志,因为只有看日志才有可能知道是什么问题,这就带来个问题,时间越来查日志就越慢,日志文件也会越来越大,所以可以考虑做日志轮询,每天生成一个日志文件,这样便于查询。(感谢同事小军:自动化的高手)
实现方法:vim logrotate.sh
#!/bin/bash
log_files=('/var/log/maillog')
log_date=`date -d "-1 day" +"%Y-%m-%d"`
rm_log=`date -d "-90 day" +"%Y-%m-%d"`
for log in "${log_files[@]}"
do
if [ -f "$log" ];then
cp ${log} ${log}.${log_date}
cat /dev/null >${log}
fi
if [ -f "${log}.${rm_log}" ];then
rm -f "${log}.${rm_log}"
fi
done
放到crontab里,夜里定期执行即可
2、日志还有就是过滤日志,把很关键的字段过滤出来方便查询问题
cat /var/log/maillog |grep reject
暂时想到这么多,后续继续补充~
整理完不容易,唉,只为自己回头能看见~
---date 2012.05.16
本文出自 “____哊.時^随记” 博客,请务必保留此出处http://xtony.blog.51cto.com/3964396/864898
相关文章推荐
- maven使用问题汇总
- php使用curl详细解析及问题汇总
- Maven使用问题汇总
- 使用python-thrift问题汇总
- UltraEdit使用问题汇总
- ajax 使用中问题汇总
- 使用AsyncHttpClient获取Session 问题汇总
- 阿里云使用问题汇总
- maven 使用问题汇总
- 在sps中使用第三方smtp软件解决邮件服务器不允许匿名访问的问题
- QC无法使用问题汇总
- 当使用Vue开发前端遇到的问题及解决办法汇总
- QC使用中问题点汇总
- Ubuntu9.10在使用中解决的问题汇总
- Intellij13 IDEA常用快捷键 (mac 10.5 +),优化,使用出现的问题汇总
- Mac OS X系统中Eclipse使用问题汇总
- Android Studio 1.x 使用问题汇总
- Maven使用问题汇总
- Android studio使用过程中遇到的问题解决汇总
- Vue使用中遇到问题汇总(一)32个