分类目录归档:mail

postfix admin command

生成数据库 postmap hash:/etc/postfix/access
显示信件列表: postqueue -p
显示信件內容: postcat -q Queue_ID          //Queue_ID为信件代号;
刪除各別信件:postsuper -d Queue_ID
全部刪除: postsuper -d ALL
扣住信件: postsuper -h Queue_ID
回复: postsuper -H Queue_ID
重新排程:
postsuper -r Queue_ID
postsuper -r ALL
清除信件:
postqueue -f (全部)
postqueue -s 主机名称(个别对象)
要查看Postfix的当前主要配置文件的存放路径:
postconf -n
系统日志:tail -f /var/log/messages
邮件日志:tail -f /var/log/maillog
clamd相关: tail -f /var/log/clamav/clamd.log  tail -f /var/log/clamav/freshclam.log
maildrop相关:tail -f /var/log/maildrop.log
apache相关:tail -f /usr/local/httpd/logs/error_log  tail -f /usr/local/httpd/logs/suexec_log
mysql相关: tail -f /usr/local/mysql/data/linux.linux.com.err
测试amavisd: amavisd -d config debug-sa
测试spam: spamassassin -D --lint
测试maildrop: maildrop -V 10 -d test@test.com

重新加载postfix-sen的配置文件
postfix -c /etc/postfix-sen reload
查看postfix-sen下的邮件的数量
postqueue -c /etc/postfix-sen -p
删除postfix-mx2-staredm的所有邮件
postsuper -c /etc/postfix-sen -d ALL

grep  Queue_ID /var/log/maillog   //查看此邮件在邮件服务器发送状态;
-----------------------------------------------------------------------

CentOS6.4+LAMP+Postfix+Dovecot+Postfixadmin+Roundcubemail (2)

大纲

十二、安装并配置病毒扫描与垃圾邮件过滤

十三、安装并配置managesieve插件

十四、常见问题分析

说明:我们继续接着上一博文继续往下面说(上一博文:http://freeloda.blog.51cto.com/2033581/1245492),首先我们来简单回忆一下我们上一篇博文的主要内容,我们说明了mail架构的主要部件,整个mail系统的工作流程,重点对比了,常规mail架构与精简mail架构的区别,重点说明了dovecot的优点,不仅能提供SASL认证,还是提供LDA功能,且效率大大的提高,不会占用太多有内存资源,然后我们具体演示了精简mail架构的配置过程,包括LAMP环境的搭建、Postfix配置、Dovecot配置、Postfixadmin配置、以及Roundcubemail的配置,完整搭建了整个邮件系统,但没有演示反垃圾邮件与邮件杀毒,在这一篇博文中我们重点讲解,反垃圾邮件与邮件杀毒,还有常见问题分析,好了下面我们就来说一说,嘿嘿!

十二、安装并配置病毒扫描与垃圾邮件过滤

1.安装安amavisd-new、clamav及spamassassin

[root@mail ~]# yum install -y  amavisd-new clamav clamav-devel clamd spamassassin

说明,amavisd-new、clamav及spamassassin可从RPMForge软件仓库安装,想想当年我们手动安装perl模块果,几十个模块一个个安装那叫一个苦B啊,嘿嘿,现在好了可以用yum直接安装,那叫一个爽!

2.查看amavisd-new、clamav及spamassassin开机自启动

[root@mail ~]# chkconfig --list | grep "amavisd\|clamd\|spamassassin"  
amavisd         0:off   1:off   2:on    3:on    4:on    5:on    6:off   
clamd           0:off   1:off   2:on    3:on    4:on    5:on    6:off   
spamassassin    0:off   1:off   2:off   3:off   4:off   5:off   6:off   
[root@mail ~]#

大家可以看到spamassassin是个服务是停止的开机没有启动,是因为amavisd-new直接将spamassassin作为一个模块使用,所以不需要守护进程,自然开机不需要启动,嘿嘿!

3.修改SpamAssassin配置文件

SpamAssassin作为amavisd-new的模块是需要特别配置,只要安装就行,但是你也可以定制它通过修改
[root@mail ~]# vim /etc/mail/spamassassin/local.cf
# These values can be overridden by editing ~/.spamassassin/user_prefs.cf   
# (see spamassassin(1) for details)
# These should be safe assumptions and allow for simple visual sifting  
# without risking lost emails.
required_hits 5  
report_safe 0   
rewrite_header Subject [SPAM]

我这里只是列出为给大家看一下,有需要的博友自行修改,我这里就不修改了!

4.修改ClamAV配置文件/etc/clamd.conf

说明,ClamAV的设定存放在/etc/clamd.conf内,我们修改/etc/clamd.conf配置文件让ClamAV知道,Amavisd-new将会利用本地的UNIX通讯端与它通信而不是利用tcp端口来与它通信!

[root@mail ~]# vim /etc/clamd.conf
#利用本地通信
LocalSocket /var/run/clamav/clamd.sock
#注释掉TCP通信端口
#TCPSocket 3310

5.修改Amavisd-new配置文件/etc/amavisd.conf

(1).通过去除以下数行的注释来停止检查病毒域垃圾邮件(由于下面数行默认是被注释掉的,因此病毒及垃圾邮件在预设中默认是被启动的)

[root@mail ~]# vim /etc/amavisd.con
# @bypass_virus_checks_maps = (1);  # controls running of anti-virus code  
# @bypass_spam_checks_maps  = (1);  # controls running of anti-spam code   
# $bypass_decode_parts = 1;         # controls running of decoders&dearchivers

(2).接着可以看到下面几行

$max_servers = 2;            # num of pre-forked children (2..30 is common), -m  
$daemon_user  = "amavis";     # (no default;  customary: vscan or amavis), -u   
$daemon_group = "amavis";     # (no default;  customary: vscan or amavis), -g   
$inet_socket_port = 10024;   # listen on this local TCP port(s)
# $notify_method  = 'smtp:[127.0.0.1]:10025';  
# $forward_method = 'smtp:[127.0.0.1]:10025';  # set to undef with milter!

说明,

$max_servers 设定同步执行的Amavisd-new进程数量,而且必须与/etc/postfix/master.cf内的amavisfeed服务的maxproc中相符合

$daemon_user及$daemon_group应该用来匹配Amavisd-new的用户及群组

$inet_socket_port   定义Amavisd-new将会在哪一个tcp端口接纳来自Postfix的连接

$notify_method及$forward_method定义Amavisd-new把邮件重新注入Postfix的途径

(3).以下是必须修改项

$mydomain = 'free.com';  #我这里是free.com域              
$MYHOME = '/var/amavis';                   
$helpers_home = "$MYHOME/var";             
$lock_file = "$MYHOME/var/amavisd.lock";   
$pid_file  = "$MYHOME/var/amavisd.pid";   
$myhostname = 'mail.free.com'; #我这里是mail.free.com主机

(4).下面是SpamAssassin设定来替换预设的SpamAssassin设置

$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level  
$sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level   
$sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g. blocks mail)   
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent   
$sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From   
# $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off   
$penpals_bonus_score = 8;    # (no effect without a @storage_sql_dsn database)   
$penpals_threshold_high = $sa_kill_level_deflt;  # don't waste time on hi spam   
$bounce_killer_score = 100;  # spam score points to add for joe-jobbed bounces
$sa_mail_body_size_limit = 400*1024; # don't waste time on SA if mail is larger  
$sa_local_tests_only = 0;    # only tests which do not require internet access?

说明,默认不需要修改但你得知道它们和意义,可以方便的帮助我们设置垃圾邮件‘

$sa_tag_level_deflt  指定Amavisd-new由哪一个级别开始写入X-Spam-Flag、X-Spam-Score、X-Spam-Status等垃圾邮件资讯标头,假如你想为所有邮件加入资讯标头,请把此值设为 -999
$sa_tag2_level_deflt  指定由哪一个级别开始在垃圾邮件的标头上标签它们
$sa_kill_level_deflt  指定Amavisd-new由哪一个级别开始拦截和扣留邮件。这个用途很大,因为SpamAssassin在预设情况下不会这样做
$sa_dsn_cutoff_level  指定由哪一个级别开始寄件失败通告不会被发送给寄件人。由于多数垃圾邮件寄件者的地址都是伪造的,不为明显的垃圾邮件发送寄件失败通告是最合理的,要不然你只会加剧反向散寄的问题
$sa_quarantine_cutoff_level  指定哪一个级别开始不必扣留垃圾邮件。这个选项预设是被注释掉的,意思是所有邮件都会被扣留

(5).下面是发送通告的邮件地址(默认是管理员邮箱,接收垃圾邮件通告的邮箱)

$virus_admin               = "virusalert\@$mydomain";  # notifications recip.  
$mailfrom_notify_admin     = "virusalert\@$mydomain";  # notifications sender   
$mailfrom_notify_recip     = "virusalert\@$mydomain";  # notifications sender   
$mailfrom_notify_spamadmin = "spam.police\@$mydomain"; # notifications sender

修改为,

$virus_admin               = "postmaster\@$mydomain";  # notifications recip.  
$mailfrom_notify_admin     = "postmaster\@$mydomain";  # notifications sender   
$mailfrom_notify_recip     = "postmaster\@$mydomain";  # notifications sender   
$mailfrom_notify_spamadmin = "postmaster\@$mydomain"; # notifications sender

(6).设置ClamAV的部分

# ### http://www.clamav.net/
#['ClamAV-clamd',   
#  \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],   
#  qr/\bOK$/m, qr/\bFOUND$/m,   
#  qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

修改为,
#去掉相关注释就行

# ### http://www.clamav.net/
 ['ClamAV-clamd',   
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],   
   qr/\bOK$/m, qr/\bFOUND$/m,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

说明,/var/run/clamav/clamd.sock这个设定必须与我们先前在/etc/clamd.conf内输入的LocalSocket /var/run/clamav/clamd.sock设定相一致。

6.修改Postfix配置文件

(1).修改/etc/postfix/master.cf

[root@mail ~]# vim /etc/postfix/master.cf
# ==========================================================================  
# # service type  private unpriv  chroot  wakeup  maxproc command + args   
# #               (yes)   (yes)   (yes)   (never) (100)   
# # ==========================================================================   
# #   
amavisfeed unix    -       -       n       -       2     smtp   
            -o smtp_data_done_timeout=1200   
            -o smtp_send_xforward_command=yes   
            -o smtp_tls_note_starttls_offer=no   
            -o disable_dns_lookups=yes   
            -o max_use=20

说明,请注意在maxproc栏内的数值 2 必须要与/etc/amavisd.conf内的$max_servers设定一致。有关各选项的详细解释请参阅Amavisd-new的文档(vim /usr/share/doc/amavisd-new-2.8.0/README.postfix)。然后我们定义一个专用的服务把邮件重新注入Postfix。我们为此在/etc/postfix/master.cf内加入一个在localhost(127.0.0.1)的tcp 10025端口(/etc/amavisd.conf的预设值)上监听的smtp服务:

# ========================================================================== 
# # service type  private unpriv  chroot  wakeup  maxproc command + args  
# #               (yes)   (yes)   (yes)   (never) (100)  
# # ==========================================================================  
127.0.0.1:10025 inet n    -       n       -       -     smtpd  
            -o content_filter=  
            -o smtpd_delay_reject=no  
            -o smtpd_client_restrictions=permit_mynetworks,reject  
            -o smtpd_helo_restrictions=  
            -o smtpd_sender_restrictions=  
            -o smtpd_recipient_restrictions=permit_mynetworks,reject  
            -o smtpd_data_restrictions=reject_unauth_pipelining  
            -o smtpd_end_of_data_restrictions=  
            -o smtpd_restriction_classes=  
            -o mynetworks=127.0.0.0/8  
            -o smtpd_error_sleep_time=0  
            -o smtpd_soft_error_limit=1001
            -o smtpd_hard_error_limit=1000 
            -o smtpd_client_connection_count_limit=0  
            -o smtpd_client_connection_rate_limit=0  
            -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings  
            -o local_header_rewrite_clients=  
            -o smtpd_milters=  
            -o local_recipient_maps=

注意,以上两项首行前面一定不能有空格,否则会出错!!!

(2).修改/etc/postfix/main.cf加入以下设定来启用邮件过滤

[root@mail ~]# vim /etc/postfix/main.cf
#filter mail
content_filter = amavisfeed:[127.0.0.1]:10024

(3).重启postfix服务

[root@mail ~]# service postfix restart  
Shutting down postfix:                                     [  OK  ]   
Starting postfix:                                          [  OK  ]

7.启动clamd及amavisd服务:

[root@mail ~]# service clamd start  
Starting Clam AntiVirus Daemon: LibClamAV Warning: **************************************************   
LibClamAV Warning: ***  The virus database is older than 7 days!  ***   
LibClamAV Warning: ***   Please update it as soon as possible.    ***   
LibClamAV Warning: **************************************************   
                                                          [  OK  ]
[root@mail ~]# service amavisd start  
Starting Mail Virus Scanner (amavisd):                     [  OK  ]   
[root@mail ~]#

9.测试

(1).利用telnet测试amavisd这个服务正在127.0.0.1:10024上监听

[root@mail ~]# telnet localhost 10024  
Trying ::1...   
telnet: connect to address ::1: Connection refused   
Trying 127.0.0.1...   
Connected to localhost.   
Escape character is '^]'.   
220 [127.0.0.1] ESMTP amavisd-new service ready   
ehlo free.com   
250-[127.0.0.1]   
250-VRFY   
250-PIPELINING   
250-SIZE   
250-ENHANCEDSTATUSCODES   
250-8BITMIME   
250-DSN   
250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE   
quit   
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel   
Connection closed by foreign host.   
[root@mail ~]#

(2).测试Postfix的smtpd正在127.0.0.1:10025上监听

[root@mail ~]# telnet localhost 10025  
Trying ::1...   
telnet: connect to address ::1: Connection refused   
Trying 127.0.0.1...   
Connected to localhost.   
Escape character is '^]'.   
220 mail.free.com ESMTP Postfix   
ehlo free.com  
250-mail.free.com   
250-PIPELINING   
250-SIZE 10240000   
250-VRFY   
250-ETRN   
250-AUTH PLAIN LOGIN CRAM-MD5   
250-AUTH=PLAIN LOGIN CRAM-MD5   
250-ENHANCEDSTATUSCODES   
250-8BITMIME   
250 DSN   
quit   
221 2.0.0 Bye   
Connection closed by foreign host.   
[root@mail ~]

(3).垃圾邮件的测试

[root@mail ~]#  cd /usr/share/doc/spamassassin-3.3.1/ 
[root@mail spamassassin-3.3.1]# sendmail test@free.com < sample-spam.txt      
[root@mail spamassassin-3.3.1]# tail -f /var/log/maillog   
Jul 11 09:15:46 mail postfix/cleanup[17529]: 6AB1E23776: message-id=<GTUBE1.1010101@example.net>   
Jul 11 09:15:46 mail postfix/qmgr[17492]: 6AB1E23776: from=<root@free.com>, size=1657, nrcpt=1 (queue active)   
Jul 11 09:15:46 mail amavis[17520]: (17520-01) Passed SPAM {RelayedTaggedInbound,Quarantined}, <root@free.com> -> <test@free.com>, quarantine: spam-rnWvh9AXIRB2.gz, Message-ID: <GTUBE1.1010101@example.net>, mail_id: rnWvh9AXIRB2, Hits: 1005.069, size: 933, queued_as: 6AB1E23776, 2403 ms   
Jul 11 09:15:46 mail postfix/smtp[17533]: D927923774: to=<test@free.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=2.7, delays=0.21/0.07/0.02/2.4, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6AB1E23776)\

从日志中我们可以看出进行了垃圾邮件过滤,嘿嘿,但效果不明显我们用Webmail测试一下,效果如下,

这就是我们刚才测试的垃圾邮件,嘿嘿!下面我们再发一封测试一下,

这是我们用test@free.com发给loda@free.com的邮件,我们用loda@free.com接收一下看看效果,

可以看到,当loda接收到这封邮件时,被标记为垃圾邮件!至此所有演示全部完成,嘿嘿,下面我们查看一下所启动的所有服务!

10.查看所有的服务与端口

[root@mail spamassassin-3.3.1]# netstat -ntulp  
Active Internet connections (only servers)   
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1188/mysqld        
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      1211/dovecot       
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      1211/dovecot       
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1050/sshd          
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      17489/master       
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN      1211/dovecot       
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN      1211/dovecot       
tcp        0      0 127.0.0.1:10024             0.0.0.0:*                   LISTEN      17517/amavisd (mast    
tcp        0      0 127.0.0.1:10025             0.0.0.0:*                   LISTEN      17489/master       
tcp        0      0 :::80                       :::*                        LISTEN      16150/httpd        
tcp        0      0 :::22                       :::*                        LISTEN      1050/sshd          
tcp        0      0 :::25                       :::*                        LISTEN      17489/master       
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               16825/dhclient     
[root@mail spamassassin-3.3.1]#

十三、安装并配置managesieve插件

说明,managesieve插件实现邮件过滤和Vacation功能

1.在Doevecot2.0之后的版本,如果需要做邮件过滤的功能需要dovecot-pigeonhole扩展包的支持,

[root@mail ~]# yum install -y dovecot-pigeonhole

2.配置dovecot配置文件

[root@mail ~]# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 sieve
[root@mail ~]# vim /etc/dovecot/conf.d/15-lda.conf
mail_plugins = quota sieve

3.重新启动dovecot

[root@mail ~]# service dovecot restart  
Stopping Dovecot Imap:                                     [  OK  ]   
Starting Dovecot Imap:                                     [  OK  ]

4. 查看Dovecot监听4190端口

[root@mail ~]# netstat -ntulp | grep 4190  
tcp        0      0 0.0.0.0:4190                0.0.0.0:*                   LISTEN      17998/dovecot      
[root@mail ~]#

5.managesieve配置文件修改,将模板复制成config.inc.php,做如下修改

[root@mail ~]# cd /var/www/html/webmail/plugins/managesieve/  
[root@mail managesieve]# ls   
Changelog  config.inc.php.dist  lib  localization  managesieve.js  managesieve.php  package.xml  skins  tests   
[root@mail managesieve]# cp config.inc.php.dist config.inc.php   
[root@mail managesieve]# vim config.inc.php   
#修改端口为
$rcmail_config['managesieve_port'] = 4190;

6.在主配置文件中使插件生效

[root@mail ~]# vim  /var/www/html/webmail/config/main.inc.php
$rcmail_config['plugins'] = array('managesieve');

7.效果测试

好了测试成功!Roundcubemail 插件很多,有需要的朋友自行增加就行,^_^……

十四、常见问题分析

说明,说实话这个常见问题分析真不好写,因为我并不知道大家会出什么问题,我这里只说明一下我遇到的一些问题!

1.复制的问题

安装或配置时,很多博友都喜欢复制博客中的内容,会带有一此空格或其它字符,配置文件对这些字符特别的敏感有一点字符可能就支出错,这个特别注意,我自己也遇到过好多次,明明配置都一样为什么你行我不行呢?嘿嘿,这个大家得特别留心!

2.postfix 相关

要查看Postfix的当前主要配置文件的存放路径:postconf -n

系统日志:tail -f /var/log/messages
邮件日志:tail -f /var/log/maillog
3.apache相关
apache相关:tail -f /usr/local/httpd/logs/error_log tail -f /usr/local/httpd/logs/suexec_log

注意,大家可以看到我这里apache运行的用户和组是vmail注意修改

[root@mail ~]# ps aux | grep httpd  
root     16150  0.0  0.0 317840   100 ?        Ss   05:59   0:01 /usr/sbin/httpd   
vmail    16152  0.0  6.5 430908 15428 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16153  0.0  7.2 429640 17184 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16154  0.0  6.2 428340 14884 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16155  0.0  6.6 428624 15672 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16156  0.0  5.9 425644 14120 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16157  0.0  5.9 425368 14124 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16158  0.0  7.2 428068 17224 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    16159  0.0  4.1 420924  9792 ?        S    05:59   0:04 /usr/sbin/httpd   
vmail    17061  0.0  6.4 427112 15280 ?        S    07:04   0:03 /usr/sbin/httpd   
vmail    17545  0.0  6.2 426612 14804 ?        S    09:18   0:02 /usr/sbin/httpd   
root     18152  0.0  0.3 103236   864 pts/1    S+   10:02   0:00 grep httpd   
[root@mail ~]#

修改方法,

[root@mail ~]# vim /etc/httpd/conf/httpd.conf
User vmail  
Group vmail

4.mysql相关
mysql相关: tail -f /usr/local/mysql/data/linux.linux.com.err

5.垃圾邮件相关
测试amavisd: amavisd -d config debug-sa

[root@mail ~]# amavisd -d config debug-sa   
The amavisd daemon is already running, PID: [17517]

测试spam: spamassassin -D –lint

[root@mail ~]# spamassassin -D --lint

6.clamd相关

查看  /var/log/clamav/clamd.log

[root@mail ~]# tail -f /var/log/clamav/clamd.log  
Thu Jul 11 09:10:39 2013 -> PDF support enabled.   
Thu Jul 11 09:10:39 2013 -> HTML support enabled.   
Thu Jul 11 09:10:39 2013 -> Self checking every 600 seconds.   
Thu Jul 11 09:22:02 2013 -> No stats for Database check - forcing reload   
Thu Jul 11 09:22:10 2013 -> Reading databases from /var/clamav   
Thu Jul 11 09:22:14 2013 -> Database correctly reloaded (1258735 signatures)   
Thu Jul 11 09:39:24 2013 -> SelfCheck: Database status OK.   
Thu Jul 11 09:49:24 2013 -> SelfCheck: Database status OK.   
Thu Jul 11 09:59:24 2013 -> SelfCheck: Database status OK.   
Thu Jul 11 10:09:24 2013 -> SelfCheck: Database status OK.

更新病毒库 freshclam

[root@mail clamav]# freshclam  
ClamAV update process started at Thu Jul 11 10:13:58 2013   
WARNING: Your ClamAV installation is OUTDATED!   
WARNING: Local version: 0.97.7 Recommended version: 0.97.8   
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)   
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 202.118.1.40)   
WARNING: getpatch: Can't download daily-15077.cdiff from db.cn.clamav.net   
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 200.236.31.1)   
WARNING: getpatch: Can't download daily-15077.cdiff from db.cn.clamav.net   
WARNING: getpatch: Can't download daily-15077.cdiff from db.cn.clamav.net   
WARNING: Incremental update failed, trying to download daily.cvd   
Downloading daily.cvd [100%]   
daily.cvd updated (version: 17485, sigs: 1458626, f-level: 63, builder: guitar)   
Downloading bytecode.cvd [100%]   
bytecode.cvd updated (version: 214, sigs: 41, f-level: 63, builder: neo)   
Database updated (2503054 signatures) from db.cn.clamav.net (IP: 202.118.1.40)   
Clamd successfully notified about the update.   
[root@mail clamav]#

查看更新日志

tail -f /var/log/clamav/freshclam.log

7.dovecot 相关

测试:telnet localhost 110  telnet localhost 143

8.总结

若发现某个服务个有问题或不能收发邮件,最好的方法就是查看相关日志文件,基本都上都是有记录的,只要发现错误,我们便能很快的解决问题!本人水平有限,只能说这么多了,嘿嘿!

来源: http://blog.51cto.com/freeloda/1246350

CentOS6.4+LAMP+Postfix+Dovecot+Postfixadmin+Roundcubemail (1)

大纲

一、mail 协议

二、mail 组件

三、mail 工作原理(两种对比)

四、安装前的准备工作

五、安装并配置LAMP环境

六、安装并配置postfixadmin

七、安装并配置phpmyadmin

八、配置postfix邮件发送代理

九、安装并配置dovecot邮件检索代理

十、测试SMTP与POP3服务

十一、安装并配置WebMail(Roundcubemail)

十二、安装并配置病毒扫描与垃圾邮件过滤

十三、安装并配置managesieve插件

十四、常见问题分析

注:系统,CentOS 6.4 X86_64 。软件,全部都是RPM包,有兴趣的博友可以尝试一下全部源码包安装!(所安装的主要软件如下,LAMP+Postfix+Dovecot+PostfixAdmin+Roundcubemail+Amavisd-new+ClamAV+SpamAssassin+Managesieve)

一、mail 协议

mail使用的协议有,

协议名称 协议类型 端口号
smtp tcp 25
pop3 tcp 110
smtps tcp 465
pop3s tcp 995
imap tcp 143
imaps tcp 993

二、mail 组件

1.MTA:mail transfer agent 邮件传输代理

常见软件,

Exchange(微软)
Sendmail 开源的软件 目前有50%的邮件服务器使用这个软件
Postfix  现在用的挺多
Qmail    昙花一现
Exim(英国剑桥大学开发的)

2.MRA:mail retravial agent 邮件检索代理

常见软件,

courier-imap:pop3,imap4,imaps,pop3s (俄罗斯开发)
dovecot (主流)

3.MDA:mail delivery agent 邮件投递代理

常见软件,

procmail (postfix默认)
maildrop (功能强大,效率高)

4.MUA:mail user agent 邮件用户代理

常见软件,

outlook express
Foxmail
pine(linux)
mutt(linux,经常用到的)

5.Mailbox 信箱

mailbox
maildir (主流)
两者的主要区别,mailbox是把所有邮件放在同一个文件中,maildir把每个用户的邮件都单独存放

三、mail 工作原理

1.常规架构

如下图,

各组件具体说明

(1).常用的客户端

Mail Client:outlook,foxmail等
Web Browser:IE,Firefox,Chrome等

(2).Postfix,最常用的MTA,我们通过postfix来发送邮件

(3).Dovecot,最常用的MRA,我们通过dovecot来收发邮件

(4).amavisd-new,可以理解成一个代理,Postfix把邮件交给他,他负责联系杀毒和反垃圾

(5).SpamAssassin,防垃圾邮件,是邮件系统的基本功能,SpamAssassin,是最有名的,尤其是和Amavisd ClamAV结合起来,这是一个经得起考虑的组合

(6).ClamAV,对邮件进行病毒扫描

(7).Cyrus-SASL,认证函数库

(8).Courier-Authlib,调用mysql数据库进行认证

(9).WebMail,通过浏览器来管理收发邮件

(10).OpenLDAP或MySQL,虚拟用户或虚拟域的存放数据库

(11).Maildir或Mailbox,用来存放用户邮件,两者的区别在于maildir为每个用户单独存放邮件,mailbox是所有邮件都存放在同一文件

(12).phpLDAPadmin,管理LDAP工具,用来管理虚拟用户与虚拟域

2.具体工作流程

(1). 当邮件通过outlook或foxmail发送到服务器的25端口,postfix接受连接,它会做一些基本检查

  • 发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝
  • 是否是授权用户,是授权可以进行转发
  • 接收者是否是服务器的用户,在这里postfix调用Cyrus-SASL认证函数库,并通过Courier-Authlib去mysql数据中验证用户,如果不是,马上拒绝
  • 如果我们启用了灰名单,会进行判断是否会拒绝邮件或者接收

(2).postfix 把邮件通过10024端口交给amavis来处理,注意amavis,只会检查邮件而不会丢弃或者拒绝邮件(如上图)

(3).amavis调用SpamAssassin检查邮件是否是spam,如果SpamAssassin认为邮件是垃圾邮件,会给邮件打上标记spam(如下图)

(注:大家会看到,只会给邮件打上spam标记,我们还是可以收到这个邮件的)

(4).amavis调用ClamAV,看邮件是否含有病毒

(5).amavis把检查完的邮件,通过10025端口重新把邮件交回给postfix

(6).postfix把邮件交给LDA(local delivery agent),LDA是负责本地邮件投放到用户的邮箱,postfix默认使用 procmail 投递邮件(我们也可以使用其它投递代理如,maildrop)到 用户的邮箱并以maildir的方式存放在硬盘上

(7).用户使用邮件客户端,通过pop3或imap协议进行连接并管理邮件,webmail 是通过imap的方式来读取或管理邮件

总结,从上面的工作流程我们可以看到用Cyrus-SASL,Courier-authlib,Maildrop太麻烦了。一大堆组件,邮件系统本来就很杂。我以能简单则简单的原则进行了精简而且效率更高,Dovecot目前已经实现了SASL,而且Dovecot的SASL能够自动CACHE查询结果,这个是比较好的。并且Dovecot还可以当LDA使用。而Postfix也支持Dovecot的SASL验证。Postfix可以直接使用Dovecot的后台认证,不需要分开配置。(如果使用Courier,我们必须安装配置额外的认证软件,比如Saslauthd,配置这个,会是一个恶梦,如果出现问题,很难排错),并且Dovecot,可以很方便实现磁盘配额的功能。Dovecot作为Courier的可替换组件,Dovecot在磁盘读写量上比Courier减少25%左右,内存占用也比Courier节省10%到70%不等。好了,说了这么多下面我们来看一下,我们的精简架构!

3.精简架构

经过与上面的对比我们明显看到简单了许多,嘿嘿!下面我们说一下具体的工作流程,

(1).当邮件发送到服务器的25端口,postfix接受连接,它会做一些基本检查

  • 发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝
  • 是否是授权用户,是授权用户可以进行转发
  • 接收者是否是服务器的用户,Postfix通Dovecot提供的SASL进行认证,如果不是,马上拒绝
  • 如果我们启用了灰名单,会进行判断是否会拒绝邮件或者接收

(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(RoundCubeMail),是通过imap的方式来读取邮件。

总结,经过上面的简单说明你应该知道整个邮件系统的工作流程了,下面我们将完整的搭建这套企业级的邮件系统!^_^……

四、安装前的准备工作

1.关闭防火墙与SELinux

[root@mail ~]# service iptables stop
iptables:清除防火墙规则:                                 [确定]
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:正在卸载模块:                                   [确定]
[root@mail ~]# service ip6tables stop
ip6tables:清除防火墙规则:                                [确定]
ip6tables:将 chains 设置为 ACCEPT 策略:filter            [确定]
:正在卸载模块:                                           [确定]
[root@mail ~]# chkconfig iptables off
[root@mail ~]# chkconfig ip6tables off
[root@mail ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@mail ~]# reboot

2.修改主机名

[root@mail ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.free.com
[root@mail ~]# reboot

3.下载并安装yum源

(1).163的yum源

(2).rpmforge软件仓库

[root@mail ~]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@mail ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
[root@mail ~]# ls
anaconda-ks.cfg  CentOS6-Base-163.repo  install.log  install.log.syslog  rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

(3).备份原有的yum源

[root@mail ~]# cd /etc/yum.repos.d/
[root@mail yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo
[root@mail yum.repos.d]# mkdir backup
[root@mail yum.repos.d]# mv CentOS-* backup/
[root@mail yum.repos.d]# ls
backup
[root@mail yum.repos.d]#

(4). 增加新的yum源

[root@mail ~]# cp CentOS6-Base-163.repo /etc/yum.repos.d/
[root@mail ~]# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
warning: rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing...                ########################################### [100%]
   1:rpmforge-release       ########################################### [100%]
[root@mail ~]# ll /etc/yum.repos.d/
总用量 24
drwxr-xr-x 2 root root 4096 7月  10 22:00 backup
-rw-r--r-- 1 root root 2006 7月  10 22:01 CentOS6-Base-163.repo
-rw-r--r-- 1 root root  739 11月 13 2010 mirrors-rpmforge
-rw-r--r-- 1 root root  717 11月 13 2010 mirrors-rpmforge-extras
-rw-r--r-- 1 root root  728 11月 13 2010 mirrors-rpmforge-testing
-rw-r--r-- 1 root root 1113 11月 13 2010 rpmforge.repo
[root@mail ~]#

(5).清理yum缓存并更新系统

[root@mail ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras rpmforge updates
Cleaning up Everything
Cleaning up list of fastest mirrors
[root@mail ~]# yum update

4.创建一个vmail用户,用作管理虚拟邮箱的文件夹

useradd -u 2000 -d /var/vmail -m -s /sbin/nologin vmail

五、安装并配置LAMP环境

说明:最新的PostfixAdmin2.3.6+Roundcubemail0.92的PHP环境要求是最低是PHP5.2,我这里RPM安装的是5.3.3

1.安装LAMP环境

[root@mail ~]#yum -y install httpd mysql mysql-devel mysql-server php php-pecl-Fileinfo php-mcrypt php-devel php-mysql php-common php-mbstring php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc pcre pcre-devel

2.整合Apache与PHP

[root@mail ~]# vim /etc/httpd/conf/httpd.conf
#增加下面现行
AddType application/x-httpd-php .php #apache解析php程序
PHPIniDir "/etc/php.ini" #指定php.ini配置文件路径
#修改这一行增加index.php
DirectoryIndex index.php index.html index.html.var
#修改apache运行的用户和组
User vmail
Group vmail

3.测试

[root@mail ~]# vim /var/www/html/index.php
<?
        phpinfo();
?>
[root@mail ~]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using mail.free.com for ServerName
                                                           [确定]
[root@mail ~]#
注:会有个警告
[root@mail ~]# vim /etc/httpd/conf/httpd.conf
#增加一行
ServerName localhost:80
[root@mail ~]# service httpd restart #重新启动不会再有警告
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]
[root@mail html]# chkconfig httpd on #加入开机自启动
[root@mail html]# chkconfig httpd --list
httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@mail html]#

测试效果如下,

看到这个图说明LAMP环境安装成功了,嘿嘿!顺便可以看一下imap这个很重要,嘿嘿!

六、安装并配置postfixadmin

1.查看所需软件

[root@mail ~]# ll
总用量 12804
-rw-------. 1 root root     970 6月  20 05:03 anaconda-ks.cfg
-rw-r--r--  1 root root    2006 9月   1 2011 CentOS6-Base-163.repo
-rw-r--r--. 1 root root   15709 6月  20 05:03 install.log
-rw-r--r--. 1 root root    4178 6月  20 05:01 install.log.syslog
-rw-r--r--  1 root root 7728693 7月   7 18:48 phpMyAdmin-4.0.4.1-all-languages.zip
-rw-r--r--  1 root root 1597001 7月   7 12:56 postfixadmin-2.3.6.tar.gz
-rw-r--r--  1 root root 3735505 7月   7 12:57 roundcubemail-0.9.2.tar.gz
-rw-r--r--  1 root root   12700 11月 13 2010 rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
[root@mail ~]#

2.解压并修改文件名

[root@mail ~]# tar xf postfixadmin-2.3.6.tar.gz -C /var/www/html/
[root@mail ~]# cd /var/www/html/
[root@mail html]# ls
index.php  postfixadmin-2.3.6
[root@mail html]# mv postfixadmin-2.3.6 postfixadmin
[root@mail html]# ls
index.php  postfixadmin
[root@mail html]#

3.配置并测试

[root@mail html]# cd postfixadmin/
#修改前先备份一下配置文件
[root@mail postfixadmin]# cp config.inc.php config.inc.php.bak
[root@mail postfixadmin]# cp setup.php setup.php.bak
[root@mail postfixadmin]# vim config.inc.php
#找到下面几行并修改
$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix';
$CONF['database_name'] = 'postfix';
$CONF['admin_email'] = 'postmaster@free.com';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '1000';
$CONF['mailboxes'] = '1000';
$CONF['maxquota'] = '1000';
$CONF['fetchmail'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';

4.为postfixadmin创建Mysql数据库与权限

[root@mail html]# service mysqld start
[root@mail html]# chkconfig mysqld on #加入开机自启动
[root@mail html]# chkconfig mysqld --list
mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@mail html]#
[root@mail ~]# mysql
mysql> create database postfix;
mysql> grant all on postfix.* to postfix@'localhost' identified by 'postfix';
mysql> flush privileges;

测试一下能不能登录,

[root@mail html]# mysql -upostfix -ppostfix
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.69 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| postfix            |
| test               |
+--------------------+
3 rows in set (0.00 sec)
mysql>
测试成功可能登录!

5.修改所有者与所有组

[root@mail html]# chown -R vmail.vmail postfixadmin/
[root@mail html]# ll
总用量 8
-rw-r--r--  1 root  root    18 7月  10 22:18 index.php
drwxrwxr-x 14 vmail vmail 4096 7月  10 22:57 postfixadmin
[root@mail html]#

6.具体配置过程如下图

(1).http://192.168.18.187/postfixadmin/setup.php

注:检查PHP环境,并初始化数据库

(2).创建设置密码并修改配置文件(我这里的密码是123456)

[root@mail postfixadmin]# vim config.inc.php    
$CONF['setup_password'] = '6471f6462d427bf547c07fb2a08fdecf:09a43f1679223
4050d298b7d0333c101d4bbd48e';

(3).创建管理员密码

先输入你刚才设置的密码,我这里是123456,然后输入管理员邮箱,我管理员密码!

出现错误,说没有dovecotpw,是因为我们还没安装dovecot,我们这里先来安装一下dovecot,后面再进行配置!

[root@mail postfixadmin]# yum install -y  dovecot dovecot-devel dovecot-mysql
[root@mail postfixadmin]# chkconfig dovecot on #加入开机自启动
[root@mail postfixadmin]# chkconfig dovecot --list
dovecot         0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@mail postfixadmin]#

我们再来设置一下管理员的账户与密码,(我这里设置是postmaster@free.com 密码:admin)

看这次设置成功,下面我们管理账户登录一下

http://192.168.18.187/postfixadmin/login.php

7.postfxiadmin不能自动创建目录,所以我们得增加自动建立目录的功能

(1).建立创建虚拟邮箱脚本,脚本名称 /usr/local/bin/maildir-creation.sh,脚本内容如下:

[root@mail ~]#vim /usr/local/bin/maildir-creation.sh
#!/bin/bash
#
HOME_DIR="/var/vmail"
USER_NAME="vmail"
GROUP_NAME="vmail"
if [ ! -d ${HOME_DIR}/$1 ] ; then
    mkdir ${HOME_DIR}/$1
    chown -R ${USER_NAME}.${GROUP_NAME} ${HOME_DIR}/$1
fi
mkdir ${HOME_DIR}/$1/$2
chown -R ${USER_NAME}.${GROUP_NAME} ${HOME_DIR}/$1/$2

(2).建立删除虚拟邮箱脚本,脚本名称 /usr/local/bin/maildir-deletion.sh ,脚本内容如下:

[root@mail ~]#vim /usr/local/bin/maildir-deletion.sh
#!/bin/bash
#
# vmta ALL = NOPASSWD: /usr/local/bin/maildir-deletion.sh
#
if [ $# -ne 2 ] ; then
  exit 127
fi
DOMAIN="$1"
USER="$2"
HOME_DIR="/var/vmail"
USER_DIR="${HOME_DIR}/${DOMAIN}/${USER}"
TRASH_DIR="${HOME_DIR}/deleted-maildirs"
DATE=`date "+%Y%m%d_%H%M%S"`
if [ ! -d "${TRASH_DIR}/${DOMAIN}" ] ; then
    mkdir -p "${TRASH_DIR}/${DOMAIN}"
fi
if [ -d "${USER_DIR}" ] ; then
    mv ${USER_DIR} ${TRASH_DIR}/${DOMAIN}/${USER}-${DATE}
fi

8.建立删除目录

[root@mail ~]# mkdir /var/vmail/deleted-maildirs
[root@mail ~]# chown -R vmail.vmail /var/vmail/deleted-maildirs/

9.赋予脚本可执行权限

[root@mail ~]# chmod 750 /usr/local/bin/maildir-*
[root@mail ~]# chown vmail.vmail /usr/local/bin/maildir-*

10.配置sudo

[root@mail ~]#vim /etc/sudoers
#在 /etc/sudoers 最后增加两行
vmail ALL = NOPASSWD: /usr/local/bin/maildir-creation.sh
vmail ALL = NOPASSWD: /usr/local/bin/maildir-deletion.sh
#在/etc/sudoers 注释掉下面内容
#Defaults    requiretty
:wq! #由于这个文件是只读的,所以得强制保存并退出

11.修改postfixadmin的相关文件

[root@mail ~]# cd /var/www/html/postfixadmin/
[root@mail postfixadmin]# vim create-mailbox.php
修改create-mailbox.php 文件,229行内容应该是:
db_log ($SESSID_USERNAME, $fDomain, 'create_mailbox', "$fUsername");
在该行前面增加下面一行,
system("sudo /usr/local/bin/maildir-creation.sh $fDomain ".$_POST['fUsername']);
[root@mail postfixadmin]# vim delete.php
修改delete.php 文件,146行内容应该是,
db_log ($SESSID_USERNAME, $fDomain, 'delete_mailbox', $fDelete);
在该行下面增加下面4行,
$userarray=explode("@",$fDelete);
$user=$userarray[0];
$domain=$userarray[1];
system("sudo /usr/local/bin/maildir-deletion.sh $domain $user");

好了至此postfixadmin配置全部完成,^_^……

七、安装并配置phpmyadmin

1.解压并重命令

[root@mail ~]# unzip phpMyAdmin-4.0.4.1-all-languages.zip
[root@mail ~]# mv phpMyAdmin-4.0.4.1-all-languages /var/www/html/
[root@mail ~]# cd /var/www/html/
[root@mail html]# ls
index.php  phpMyAdmin-4.0.4.1-all-languages  postfixadmin
[root@mail html]# mv phpMyAdmin-4.0.4.1-all-languages phpmyadmin
[root@mail html]# ls
index.php  phpmyadmin  postfixadmin
[root@mail html]#

2.修改配置文件

[root@mail html]# cd phpmyadmin/
[root@mail phpmyadmin]# cp config.sample.inc.php config.inc.php     
[root@mail phpmyadmin]#

3.给phpmyadmin授权

mysql> grant all on *.* to root@'localhost' identified by '123456';
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

4.测试

好了,登录成功,现在我们就可以用phpmyadmin来管理mysql数据库了,嘿嘿!

八、配置postfix邮件发送代理

注:Postfix用CentOS6.4系统自带的,因为CentOS6.4里面的postfix包已经支持mysql

1.查看postfix版本

[root@mail postfixadmin]# rpm -qa | grep postfix
postfix-2.6.6-2.2.el6_1.x86_64

2.配置postfix

[root@mail ~]# vim /etc/postfix/main.cf
#基本配置
myhostname = mail.free.com
mydomain = free.com
myorigin = $mydomain
inet_interfaces = all
mynetworks_style = host
mynetworks = 192.168.18/24, 127.0.0.0/8
#虚拟域名配置
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has exceeded their disk space quota, please try again later.
virtual_overquota_bounce = yes
#Specify the user/group that owns the mail folders. I'm not sure if this is strictly necessary when using Dovecot's LDA.
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
#Specifies which tables proxymap can read: http://www.postfix.org/postconf.5.html#proxy_read_maps
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
[root@mail ~]# postconf #检查配置文件是否有错误

3.创建Mysql脚本(注意用户名和密码、DBNAME,我这里全是postfix)
(1).创建/etc/postfix/mysql_virtual_domains_maps.cf文件

[root@mail ~]# vim /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'

(2).创建/etc/postfix/mysql_virtual_alias_maps.cf文件

[root@mail ~]# vim /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

(3).创建/etc/postfix/mysql_virtual_mailbox_maps.cf文件

[root@mail ~]# vim /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

(4).创建/etc/postfix/mysql_virtual_mailbox_limit_maps.cf文件

[root@mail ~]# vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

4.SMTP 认证设定

(1).查看postfix支持的认证,默认支持dovecot

[root@mail ~]# postconf -a
cyrus
dovecot

(2).修改/etc/postfix/main.cf配置文件

[root@mail ~]#vim /etc/postfix/main.cf
#SASL SUPPORT FOR CLIENTS
# Turns on sasl authorization
smtpd_sasl_auth_enable = yes
#Use dovecot for authentication
smtpd_sasl_type = dovecot
# Path to UNIX socket for SASL
smtpd_sasl_path = /var/run/dovecot/auth-client
#Disable anonymous login. We don't want to run an open relay for spammers.
smtpd_sasl_security_options = noanonymous
#Adds support for email software that doesn't follow RFC 4954.
#This includes most versions of Microsoft Outlook before 2007.
broken_sasl_auth_clients = yes
#
smtpd_recipient_restrictions =  permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

5.使用Dovecot做为投递

[root@mail ~]# vim /etc/postfix/main.cf
# TRANSPORT MAP
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
#修改master.cf文件
[root@mail ~]# vim /etc/postfix/master.cf
#在最后增加这两行,注意flags前面有两个空格,不然会报错
dovecot   unix  -       n       n       -       -       pipe,
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

九、安装并配置dovecot邮件检索代理

说明:dovecot 1.X 与 dovecot 2.X配置文件的区别,1.X所以的配置都在同文件中而2.X是多个文件存放的(/etc/dovecot/dovecot.conf 和 /etc/dovecot/conf.d/),所有2.X配置文件比较分散,我把需要修改的配置文件的内容列出来

1.修改dovecot配置文件

(1).修改/etc/dovecot/dovecot.conf #主配置文件

[root@mail ~]# vim /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *
dict {
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
!include conf.d/*.conf

(2).修改/etc/dovecot/conf.d/10-auth.conf

[root@mail ~]# vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login cram-md5
!include auth-sql.conf.ext

(3).修改/etc/dovecot/conf.d/10-mail.conf

[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:%hMaildir
mbox_write_locks = fcntl

(4).修改/etc/dovecot/conf.d/10-master.conf

[root@mail ~]# vim /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener lmtp {
  }
}
service imap {
}
service pop3 {
}
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
#新加下面一段,为smtp做认证
  unix_listener auth-client {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
    mode = 0600
    user = vmail
    group = vmail
  }
}

(5).修改/etc/dovecot/conf.d/15-lda.conf

[root@mail ~]# vim /etc/dovecot/conf.d/15-lda.conf
protocol lda {
  mail_plugins = quota
  postmaster_address = postmaster@free.com #管理员邮箱
}

(6).修改/etc/dovecot/conf.d/20-imap.conf

[root@mail ~]# vim /etc/dovecot/conf.d/20-imap.conf
protocol imap {
        mail_plugins = quota imap_quota
}

(7).修改/etc/dovecot/conf.d/20-pop3.conf

[root@mail ~]# vim /etc/dovecot/conf.d/20-pop3.conf
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  mail_plugins = quota
}

(8).修改/etc/dovecot/conf.d/90-quota.conf

[root@mail ~]# vim /etc/dovecot/conf.d/90-quota.conf
plugin {
  quota_rule = *:storage=1G
}
plugin {
}
plugin {
  quota = dict:User quota::proxy::quota
}
plugin {
}

(9).增加/etc/dovecot/dovecot-sql.conf.ext

[root@mail ~]# vim /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix
default_pass_scheme = CRAM-MD5
user_query = SELECT CONCAT('/var/vmail/', maildir) AS home, 2000 AS uid, 2000 AS gid, CONCAT('*:bytes=', quota) as quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT username AS user, password, CONCAT('/var/vmail/', maildir) AS userdb_home, 2000 AS userdb_uid, 2000 AS userdb_gid, CONCAT('*:bytes=', quota) as userdb_quota_rule FROM mailbox WHERE username = '%u' AND active='1'

(10).增加/etc/dovecot/dovecot-dict-sql.conf.ext

[root@mail ~]# vim /etc/dovecot/dovecot-dict-sql.conf.ext
connect = host=localhost dbname=postfix user=postfix password=postfix
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}

2.重新启动服务

[root@mail ~]# service postfix restart
关闭 postfix:                                             [确定]
启动 postfix:                                             [确定]
[root@mail ~]# service dovecot restart
停止 Dovecot Imap:                                        [失败]
正在启动 Dovecot Imap:                                    [确定]

至此dovecot配置全部完成,^_^ ……
十、测试SMTP与POP3服务

1.postfixadmin创建虚拟域

注:新建free.com测试域!

2.postfixadmin创建测试箱

注:新建test@free.com和loda@free.com两个测试邮箱!

3.测试连接25端口

[root@mail ~]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.free.com ESMTP Postfix
ehlo free.com
250-mail.free.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5
250-AUTH=PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@mail ~]#

注:连接成功!

4.测试连接110端口

[root@mail ~]# telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user 123@free.com
+OK
pass 123456
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
[root@mail ~]#
注:可以看到,认证成功并登录成功!

5.查看自动创建的邮箱

[root@mail ~]# cd /var/vmail/
[root@mail vmail]# ll
总用量 8
drwxr-xr-x 2 vmail vmail 4096 7月  11 00:07 deleted-maildirs
drwx------ 3 vmail vmail 4096 7月  11 01:17 free.com
[root@mail vmail]# cd free.com/
[root@mail free.com]# ls
123
[root@mail free.com]#

注:已自动创建脚本,说明我们上面的脚本执行成功!

6.foxmail客户端测试收发邮件

如图,test@free.com 发给 loda@free.com 邮件

loda@free.com 成功收到邮件!

详细内容如下,

测试成功能发能收!

7.问题说明

如下图,当我们执行postfixadmin的备份,会出现以下警告,并不能实现备份!

从上图中我们可以看出,data.timezone时区问题引起的,下面我们就来解决一下!

(1).修改/var/www/html/admin/backup.php文件

[root@mail admin]# vim /var/www/html/admin/backup.php
#增加一行(如下图)
date_default_timezone_set('PRC');

(2).效果如下

注:postfixadmin备份成功!到此一个完整的邮件系统已完成,但是为了方便的浏览和管理文件,我们下面安装一下WebMail!

十一、安装并配置WebMail(Roundcubemail)

1.解压并重命名

[root@mail ~]# tar -xf roundcubemail-0.9.2.tar.gz -C /var/www/html/
[root@mail ~]# cd /var/www/html/
[root@mail html]# ls
admin  index.php  phpmyadmin  roundcubemail-0.9.2
[root@mail html]# mv roundcubemail-0.9.2 webmail
[root@mail html]# ls
admin  index.php  phpmyadmin  webmail
[root@mail html]#

2.配置WebMail

从图上可以看出date.timezone报错,下面我们来修正一下!

3.修改php.ini

[root@mail installer]# vim /etc/php.ini
date.timezone = Asia/Shanghai

4.修改apache中PHPini的位置

[root@mail installer]# vim /etc/httpd/conf/httpd.conf
PHPIniDir "/etc/php.ini"
[root@mail installer]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@mail installer]#

5.修改所有Web文件的所属者与所属组

[root@mail ~]# cd /var/www/html/
[root@mail html]# ll
total 16
drwxrwxr-x 14 1000 1010 4096 Jul 11 05:25 admin
-rw-r--r--  1 root root   18 Jul 11 04:12 index.php
drwxr-xr-x  9 root root 4096 Jul 11 04:17 phpmyadmin
drwxr-xr-x 11  501   80 4096 Jun 16 23:10 webmail
[root@mail html]# chown -R vmail.vmail admin
[root@mail html]# chown -R vmail.vmail phpmyadmin
[root@mail html]# chown -R vmail.vmail webmail
[root@mail html]# ll
total 16
drwxrwxr-x 14 vmail vmail 4096 Jul 11 05:25 admin
-rw-r--r--  1 root  root    18 Jul 11 04:12 index.php
drwxr-xr-x  9 vmail vmail 4096 Jul 11 04:17 phpmyadmin
drwxr-xr-x 11 vmail vmail 4096 Jun 16 23:10 webmail

6.查看session保存位置

[root@mail html]# vim /etc/php.ini
session.save_path = "/var/lib/php/session"

7.修改session文件的所属组

[root@mail html]# cd /var/lib/php/
[root@mail php]# ll
total 4
drwxrwx--- 2 root apache 4096 Feb 22 10:56 session
[root@mail php]# chown -R .vmail session/
[root@mail php]# ll
total 4
drwxrwx--- 2 root vmail 4096 Feb 22 10:56 session
[root@mail php]#

8.效果如下

9.单击NEXT我们继续进行设置(下面是必须配置的选项)

(1).配置webmail的显示名称

(2).配置Webmail数据库相关(我这里全部设置是,roundcubemail)

(3).配置IMAP

(4).  配置SMTP服务器

(5).配置完成效果如下,(大家可以看到我们配置好的选项都被列出来了,我们得下载两个配置文件main.inc.php和db.inc.php并上传到时服务器中)

(6).上传至服务器相关目录中

[root@mail ~]# cd /var/www/html/webmail/config/
[root@mail config]# ll
total 92
-rw-r--r-- 1 root  root   2905 Jul 10 22:15 db.inc.php
-rw-r--r-- 1 vmail vmail  2893 Jun 16 23:10 db.inc.php.dist
-rw-r--r-- 1 root  root  38438 Jul 10 22:15 main.inc.php
-rw-r--r-- 1 vmail vmail 38414 Jun 16 23:10 main.inc.php.dist
-rw-r--r-- 1 vmail vmail  2731 Jun 16 23:10 mimetypes.php
[root@mail config]#

(7). 给WebMail授权

mysql> CREATE DATABASE roundcubemail;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost IDENTIFIED BY 'roundcubemail';
FLUSH PRIVILEGES;Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

10.单击CONTINUE继续

11.单击初始化数据库按钮

12.初始化完成并用phpmyadmin查看

可以看到已建立好的数据库文件!^_^……

13.下面我们进行WebMail测试

14.登录并进行收发邮件

可以看到发送成功,嘿嘿!下面我们用foxmail接收一下!

可以看到我们成功的收到了这封邮件测试成功!至些WebMail安装成功,下面我们就得说反垃圾邮件和邮件杀毒了,嘿嘿!

说明:由于整个mail邮件系统配置复杂,文字与图片较多我分了两篇进行说明!下一篇博文中CentOS6.4+LAMP+Postfix+Dovecot+Postfixadmin+Roundcubemail 打造企业级邮件服务器 (2)我们重点讲解,

十二、安装并配置病毒扫描与垃圾邮件过滤

十三、安装并配置managesieve插件

十四、常见问题分析

文章来源: http://blog.51cto.com/freeloda/1245492

dmarc

基于域的邮件验证、报告和一致性(DMARC) 这个规范旨在减少邮件滥用(例如通过伪造邮件的“From:
报头来篡改原件的入站垃圾邮件和网络钓鱼邮件。 DMARC 帮助域拥有者使用“域名系统”(DNS)来向收件服务器告知其 DMARC
策略,例如他们希望这些服务器如何处理自称来自他们域但无法验证实际来源的邮件。 收件服务器在处理入站邮件时通过 DNS
查询检索到的这个策略可以向服务器表明应该隔离或拒收不符合这个策略的邮件,或根本不采取任何操作(例如继续照常处理邮件)。 除了这个策略以外,该域的
DMARC DNS 记录也可以包含服务器请求来向某人发送 DMARC
报告、概述自称来自此域的入站邮件的总数、它们是否通过验证、以及任何失败的详细信息。 DMARC
的报告功能在确定您的邮件验证流程是否有效,以及伪造邮件使用您域名的频率时极其有用。

在“安全设置”对话框的“发件人验证”部分中,提供以下三个部分供您配置 MDaemon 的 DMARC 验证和报告功能: DMARC 验证、DMARC 报告和 DMARC 选项。

DMARC 验证

作为 DMARC 验证流程的一部分,MDaemon 对在每封入站邮件的“From:” 报头中找到的域执行 DMARC DNS 查询。 这用来确定该域是否使用 DMARC,如果使用了 DMARC 则检索其“DMARC DNS 记录”,其中包含了它的策略和其他 DMARC 相关信息。 此外,DMARC 使用 SPFDKIM 来验证每封邮件,并要求它至少通过一项测试来通过 DMARC 验证。 如果该邮件通过验证,则按照 MDaemon
其余投递和过滤流程来照常处理这封邮件。 如果未通过验证,则取决于该域的 DMARC 策略以及您对于 MDaemon
如何处理这些邮件的配置来确定该邮件的命运。

如果一封邮件未通过 DMARC 验证,而且 DMARC 域拥有一个“p=none”策略,则不会采取任何惩罚性操作并照常处理这封邮件。 相反,当 DMARC 域拥有一个存在限制的策略,例如“p=quarantine”或“p=reject”,MDaemon 可以有选择性地将该邮件自动过滤到接收用户垃圾邮件的文件夹。 您也可以选择在该域使用“p=reject”策略时,让 MDaemon 完全拒收未通过验证的邮件。 对于使用限制性策略且未通过验证的邮件,MDaemon 将取决于策略插入“X-MDDMARC-Fail-policy: quarantine”或“X-MDDMARC-Fail-policy: reject”报头。 这帮助您使用“内容过滤器”,基于这些报头来执行一些操作,例如将该邮件发送至特定的文件夹进行审核。

建议默认情况下为大多数 MDaemon 配置启用 DMARC 验证。

DMARC 报告


MDaemon 查询 DNS 是否存在 DMARC 记录时,该记录可能包含一些标签,指示域的拥有者是希望接收与声称来自此域邮件相关的
DMARC 综合报告还是故障报告。 “DMARC 报告”屏幕上的一些选项供您用来指定是否希望发送请求的报告类型,并指定这些报告应该包含的元数据。
将在每晚午夜(UTC)发送综合报告,将按邮件来发送故障报告,因为每个发生的事件将触发这个报告。 报告以打包压缩(ZIP)的 XML
文件附件形式发送,而且在线提供各种分析工具,帮助收件人更简便地进行查看。

默认情况下 MDaemon 不发送综合或故障报告。 如果您希望发送这些报告,请在“DMARC 报告”屏幕上启用相应的选项。

DMARC 选项

“DMARC 选项”屏幕包含各种选项,例如在 DKIM 报告中包含特定信息、记录 DMARC DNS 记录、以及更新 MDaemon 用于 DMARC 的“公共后缀”文件。

DMARC 验证和邮件列表

因为 DMARC 的目的在于确保在邮件“From:” 报头中找到的域不被伪造,必须允许发件服务器代表该域来发送邮件。 这会给邮件列表带来一个问题,因为列表通常代表来自外部域的列表成员来分发邮件,并使“From:” 报头保持不变。 这就意味着在收件服务器尝试对这些邮件使用 DMARC 验证时,邮件会被不关联“From:
报头域的服务器发送。 如果 DMARC 域正好使用了存在限制的 DMARC 策略,这会导致邮件被隔离甚至被收件服务器拒收。
在某些情况下,这会导致从列表的成员中删除收件人。 为了避免这个问题,在 MDaemon 发现列表邮件来自使用了受限 DMARC
策略的域时,MDaemon 将使用邮件列表的地址来替换“
From:” 报头。 此外,您也开始配置 MDaemon 在列表邮件来自存在受限策略的域时,拒收这些邮件。 后者使所在域使用了受限策略的用户能够向列表发送邮件。 用来替换“From:” 报头的选项位于邮件列表编辑器的“报头”屏幕。 用来拒收邮件的选项位于“设置”屏幕。

为您的 MDaemon 域使用 DMARC

如果您希望为您自己的域使用
DMARC,这就意味着您希望支持 DMARC 的收件服务器使用 DMARC 来验证声称由您发送的邮件,您首先必须确保您已为该域创建了格式正确的
SPF 和 DKIM DNS 记录;而且您必须使这些选项正确工作来使用 DMARC。 如果您正在使用 DKIM,您也要配置 MDaemon
的“DKIM 签名”选项来签署该域的邮件。 此外,您必须为该域创建一个 DMARC DNS 记录。 通过查询 DNS 是否存在这个拥有特殊格式的
TXT 记录,收件服务器可以确定您的 DMARC 策略和各种可选的参数,例如: 您使用的验证模式、您是否希望接收综合报告、应接收报告的邮件地址等。

一旦您正确配置了
DMARC 并开始接收 DMARC XML 报告,您可以使用大量在线工具来阅读这些报告并诊断任何潜在的问题。 方便起见,在
\MDaemon\App\ 文件夹中还为您提供一个 DMARC Reporter 工具。 请参阅 DMARCReporterReadMe.txt
来获得使用说明。

定义 DMARC TXT 资源记录

以下是 DMARC 记录常用组件的基本概述。 要获得更多详细信息或有关高级配置的更多信息,请参阅: www.dmarc.org.

拥有者字段

DMARC 资源记录的“拥有者”(也叫做“姓名”或“左侧”)字段必须始终为 _dmarc,如果您希望指定该记录应用到的域或子域,也可以采用 _dmarc.domain.name 这种形式。

示例:

example.com 的 DMARC 记录

_dmarc IN TXT “v=DMARC1;p=none”

该记录将应用于发自 user@example.com 或子域为 example.com 的电子邮件,例如 user@support.example.com、user@mail.support.example.com 等。

_dmarc.support.example.com IN TXT “v=DMARC1;p=none”

该记录仅应用于发自 user@support.example.com 的电子邮件,不应用于发自 user@example.com 的电子邮件。

_dmarc.support IN TXT “v=DMARC1;p=none”

该记录将应用于发自: user@support.example.com、user@a.support.example.com、user@a.b.support.example.com 等的电子邮件。

DMARC 记录标签和值

必需标签

标签

备注

v=

DMARC1

这是“版本”标签,必须作为该记录的 DMARC 特定文本部分的第一个标签。 即使其他 DMARC 标签值不区分字母大小写,v= 标签的值必须是大写字母: DMARC1

示例:

_dmarc IN TXT “v=DMARC1;p=none”

p=

none

quarantine

reject

这是“策略”标签,必须作为 DMARC 记录中的第二个标签,紧接 v= 这个标签。

p=none 表示收件服务器基于 DMARC 查询结果不采取任何操作。 不得基于未通过 DMARC 检查这个失败隔离或拒收邮件。 不过可以出于其他理由隔离或拒收这些邮件,例如未通过垃圾邮件过滤测试或与 DMARC 无关的其他安全检查。 对于 p=none 的使用有时被称为“监控”或“监控模式”,因为您可以配合 rua= 这个标签一起使用来从收件域接收有关您邮件的综合报告,不过不会对未通过 DMARC 检查的这些邮件执行任何惩罚性操作。 您可以一直使用这个策略,直到您彻底测试了您的 DMARC 实施,并确保您已准备好使用更具有限制性的 p=quarantine 策略。

p=quarantine 这个策略用于以下场景:在邮件的“From:” 报头声称由您所发送但未通过 DMARC 检查时,您希望其他邮件服务器将该邮件视为可疑邮件。 取决于服务器的本地策略,这可以表示对邮件进行额外审核、将其放入收件人的垃圾邮件文件夹、将其路由到不同的服务器或采取其他操作。

p=reject 表示您希望收件服务器拒收未通过 DMARC 验证的任何邮件。 不过一些服务器仍然接收这些邮件,不过将其隔离或进行额外审核。
这是限制性最高的策略,通常不使用该策略,除非您对自己的邮件策略、以及您允许账户使用的邮件或服务类型把握十足。
例如,如果您允许您的用户加入第三方邮件列表,使用邮件转发服务,并使用网站上的“共享”功能,使用
p=reject 将可能导致一些合法邮件被拒收。 而且该设置也会使某些用户被一些邮件列表删除或阻止。

示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;rua=mailto:dmarc-report@example.net”

额外标签

以下列出的所有标签都是可选标签。 如果未在记录中使用任何这些标签,则假定其默认值。

标签

备注

sp=

none

quarantine

reject

默认值:

如果未使用 sp=,则对域和子域应用 p= 这个标签。

此标签用来指定应用 DMAR 记录的域的子域将使用的策略。 例如,如果应用于 example.com 的记录中使用了这个标签,那么会将 p= 这个标签中指定的策略应用于来自 example.com 的邮件,将 sp= 这个标签中指定的策略应用于来自 example.com 子域的邮件,例如 mail.example.com。如果在记录中忽略了这个标签,则将 p= 这个标签应用于该域及其子域。

示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;sp=reject”

rua=

由逗号分隔的将接收 DMARC 综合报告的邮件地址列表 必须使用以下格式输入作为 URI 的 地址:
mailto:user@example.com

默认值: none

如果未使用这个标签,则不发送综合报告。

此标签表示您希望从接收了一封“From:” 声称来自您所在域邮件的收件服务器接收 DMARC 综合报告。 使用以下格式指定作为 URI 的一个或多个邮件地址: mailto:user@example.com,使用逗号分隔多个 URI。

示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;
rua=mailto:user01@example.com
,mailto:user02@example.com”

通常这些地址将位于此记录覆盖的域。 如果您希望将报告发送至其他域的地址,则该域的 DNS 区域文件必须也包含一个专用的 DMARC 记录,指示它将接收该域的 DMARC 报告。

example.com 的记录示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;
rua=mailto:non-local-user@example.net”

example.net 的记录:

example.com._report._dmarc TXT “v=DMARC1”

ruf=

由逗号分隔的将接收 DMARC 故障报告的邮件地址列表 必须使用以下格式输入作为 URI 的 地址:
mailto:user@example.com

默认值: none

如果未使用这个标签,则不发送故障报告。

此标签表示您希望从接收了一封“From:” 声称来自您所在域邮件的服务器接收 DMARC 故障报告,前提是满足了在 fo= 这个标签中指定的条件。 在默认情况下,如果未指定 fo= 这个标签,在邮件未通过所有 DMARC 验证检查时将发送故障报告(例如未通过 SPF 和 DKIM 验证)。 使用以下格式指定作为 URI 的一个或多个邮件地址: mailto:user@example.com,使用逗号分隔多个 URI。

示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;
ruf=mailto:dmarc-failures@example.com”

通常这些地址将位于此记录覆盖的域。 如果您希望将报告发送至其他域的地址,则该域的 DNS 区域文件必须也包含一个专用的 DMARC 记录,指示它将接收该域的 DMARC 报告。

example.com 的记录示例:

_dmarc IN TXT “v=DMARC1;p=quarantine;
ruf=mailto:non-local-user@example.net”

example.net 的记录:

example.com._report._dmarc TXT “v=DMARC1”

要了解有关 DMARC 规范的更多扩展信息,请参阅: www.dmarc.org

创建记录

在 SPF 和 DKIM 就绪后,您就可以通过 TXT 记录的形式向您的网域的 DNS 记录添加策略,以配置 DMARC(就像对 SPF 或 ADSP 执行的操作一样)。

TXT 记录的名称应该是“_dmarc.your_domain.com.”,其中“your_domain.com”替换为您的实际域名。

下面是 DMARC TXT 记录中的常用标记:

标记名称 必填 用途 样例

v

必需 协议版本 v=DMARC1

p

必需 域的策略 p=quarantine

pct

可选 要过滤的邮件百分比 pct=20

rua

可选 汇总报告的报告 URI rua=mailto:aggrep@example.com

sp

可选 该域的子域的策略 sp=reject

aspf

可选 SPF 的匹配模式 aspf=r

有关其他可用标记,请参阅 DMARC 标记注册表

 

只有 v(版本)和 p(策略)标记是必需的。有三种策略设置(或邮件处置设置)可供选用:

  • – 不采取任何行动。仅在每日报告中记录受影响的邮件。
  • 隔离 – 将受影响的邮件标记为垃圾邮件。
  • 拒绝 – 在 SMTP 层撤销邮件。

匹配模式指发件人记录与 SPF 和 DKIM 签名相比的一致程度,有两个可能的值:宽松或严格,分别以“r”和“s”表示。简言之,“宽松”允许部分匹配(例如给定网域的子域),而“严格”要求完全匹配。

请务必在可选的 rua 标记中填入您的电子邮件地址,以接收每日报告。

下面是一些
DMARC TXT 记录示例 (_dmarc.your_domain.com IN
TXT),您略加修改即可使用。当然,要将“your_domain.com”和“postmaster@your_domain.com”替换为您的实际域名和电子邮件地址。

在以下 TXT 记录示例中,如果邮件声称从您的 domain.com 发送,但未能通过 DMARC 检查,系统将不采取操作。不过,所有这些邮件都会显示在发送到“postmaster@your_domain.com”的每日汇总报告中。

"v=DMARC1; p=none; rua=mailto:postmaster@your_domain.com"在下面的 TXT 记录示例中,如果邮件声称从您的 domain.com 发送,但未能通过 DMARC 检查,那么以5%的比例将其隔离。然后,系统会将每日汇总报告通过电子邮件发送到“postmaster@your_domain.com”。

"v=DMARC1; p=quarantine; pct=5; rua=mailto:postmaster@your_domain.com"在最后这个示例中,如果邮件声称从“your_domain.com”发送,但未能通过
DMARC 检查,那么系统将 100%
拒绝该邮件。然后,系统会将每日汇总报告通过电子邮件发送到“postmaster@your_domain.com”和“dmarc@your_domain.com”。

"v=DMARC1; p=reject; rua=mailto:postmaster@your_domain.com, mailto:dmarc@your_domain.com"

每日报告采用
XML 格式。阅读该报告可以更好地了解邮件流情况。此外,报告还可以帮助您确保对出站邮件源进行正确的身份验证。如果不同 IP
地址发送声称来自您网域的邮件,请确保这些 IP 地址确实合法,并使用 DKIM 对其进行正确配置,或将其添加到相应的 SPF
范围内。如果新的邮件源上线但管理员设置了拦截策略,或者现有邮件源的配置出现问题,此时报告还可以帮助管理员快速采取措施。

下面是一份报告的摘录,显示了从两个 IP 地址发送的邮件的结果,一封邮件为直接发送,另一封为转发。两封邮件均成功发送:

 <record>
 <row>
 <source_ip>207.126.144.129</source_ip>
 <count>1</count>
 <policy_evaluated>
 <disposition>none</disposition>
 </policy_evaluated>
 </row>
 <identities>
 <header_from>stefanomail.com</header_from>
 </identities>
 <auth_results>
 <dkim>
 <domain>stefanomail.com</domain>
 <result>pass</result>
 <human_result></human_result>
 </dkim>
 <spf>
 <domain>stefanomail.com</domain>
 <result>pass</result>
 </spf>
 </auth_results>
 </record>
 <record>
 <row>
 <source_ip>207.126.144.131</source_ip>
 <count>1</count>
 <policy_evaluated>
 <disposition>none</disposition>
 <reason>
 <type>forwarded</type>
 <comment></comment>
 </reason>
 </policy_evaluated>
 </row>
 <identities>
 <header_from>stefanomail.com</header_from>
 </identities>
 <auth_results>
 <dkim>
 <domain>stefanomail.com</domain>
 <result>pass</result>
 <human_result></human_result>
 </dkim>
 <spf>
 <domain>stefanomail.com</domain>
 <result>pass</result>
 </spf>
 </auth_results>
 </record> 

逐步部署

我们强烈建议您按照以下操作顺序应用策略,逐步增加 DMARC
的使用。首先,监控您的流量,并查找报告中的异常之处,例如仍没有签名或可能经过伪装的邮件。在您对结果感到满意之后,将 TXT
记录策略设置从“无”改为“隔离”。然后,再次查看结果,这次要检查垃圾邮件的捕获情况及每日 DMARC
报告。最后,在确信您的所有邮件都已签名之后,将策略设置改为“拒绝”,以充分利用 DMARC。重新查看报告,以确保结果如您所愿。

类似地,可选的
pct 标记也可以用来对 DMARC 进行分步部署和采样。因为默认值为 100%,所以,如果在 DMARC TXT
记录中采用“pct=20”,则系统只对所有受该策略影响的邮件中的五分之一(而不是全部)真正执行此操作。在您选择隔离和拒绝邮件时,此设置非常有用。在开始时设置一个较低的百分比,然后每隔几天逐步增加。

因此,比较慎重的完整部署过程应该像下面这样:

  1. 全部监控。
  2. 隔离 1%。
  3. 隔离 5%。
  4. 隔离 10%。
  5. 隔离 25%。
  6. 隔离 50%。
  7. 全部隔离。
  8. 拒绝 1%。
  9. 拒绝 5%。
  10. 拒绝 10%。
  11. 拒绝 25%。
  12. 拒绝 50%。
  13. 全部拒绝。

尝试尽快删除百分比,以完成整个部署。

请记得照常查看每日报告

Source: https://www.xiaoyu.net/1144.html

hmailserver密码算法

表 hm_accounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:

0 -> 用明码来保存密码,即不对密码进行加密;

1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;

2 -> 使用 MD5 加密算法来加密密码;

3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法

 

盐是第6 SHA256哈希值在数据库中看到的字符。 盐是一个随机字符串。 这已经不是第6,在用户的密码字符。



1。 生成随机字符串,其中包含6个字符的字符0-9,自动对焦(十六进制字符串)。 这是盐。

2。 创建一个新字符串,温度含有盐+用户的密码。

3。 生成的SHA256哈希温度。 这是哈希。

4。 在数据库中,存储字符串盐+在密码栏哈希。



这里是用GOOGLE翻译的, 很多词语不对,不过大概意思还是能理解;

盐其实是一个随机字符串,我们就理解为每次创建密码时,生成的随机字符串;





hmailserver用户密码的加密算法是这样的:

1.假设随机字符串:8et5p9 , 假设密码是:123456;



2.将”随机字符串”和”密码”连起来:8et5p9123456;



3.将连起来的新字符串,用SHA256加密,如:hash(‘sha256′,”8et5p9123456″)

得到的密文是:2dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1



4.将”随机字符串”与”SHA256加密后的密文”连起来,

得到新密文:8et5p92dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1

SMTP 命令

SMTP 命令:
HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话

mail port | 邮箱端口

mail 常规支持smtp转发和pop3接收.
POP3服务器地址: pop.gmail.com 端口:110,   SSL 995

SMTP服务器地址: smtp.gmail.com 端口:25,   SSL: 465     STARTTLS: 587

IMAP服务器地址: imap.gmail.com 端口:143,  SSL:993

465端口是SMTPS(SMTP-over-SSL)SSL/TLS通讯协议的 内容一开始就被保护起来了 是看不到原文的。
587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的。
994端口为个别邮局用于SMTPS(SMTP-over-SSL)的端口。

 

=========================================================

 

25端口(SMTP):25端口为SMTP(Simple Mail Transfer
Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。

如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。

109端口(POP2):109端口是为POP2(Post Office Protocol Version2,邮局协议2)服务开放的,是用于接收邮件的。

110端口(POP3):110端口是为POP3(Post Office Protocol Version3,邮局协议3)服务开放的,是用于接收邮件的。

143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

目前POP3使用的比POP2广得多,POP2几乎被淘汰,也有某些服务器同时支持POP2和POP3协议。客户端可以使用POP3协议来访问服务端的邮件服务,如今ISP的绝大多数邮件服务器都是使用POP3协议(极少用POP2协议)。在使用邮件客户端程序的时候,会要求输入POP3服务器地址,默认情况下使用的就是110端口。当你用邮件客户端(比如、Thunderbird、foxmail、MS
Outlook
Express以及各类邮件精灵)登录时,你的机器就会自动用机器的某一个动态端口(大于1024)连接邮件服务器的110端口,服务器就把别人给你发的邮件(之前保存在邮件服务器上),发送到你机器,这样你就可以看到你客户端工具上的收件箱里的新邮件了。

IMAP协议,和POP3协议一样是用来接收邮件的,但是它有它的特别和新颖之处,它是面向用户的,它和POP3协议的主要区别是:用户可以不用把所有的邮件内容全部下载,而是只下载邮件标题和发件人等基本信息,用户可以由标题等基本信息,去决定是否下载邮件全文,用户可以通过客户端的浏览器直接对服务器上的邮件进行操作(比如:打开阅读全文、丢进垃圾箱、永久删除、整理到某文件夹下、归档、)。再简单来说就是:浏览器用的IMAP协议(143端口)来为你接收邮件以及让你很方便的操作服务器上的邮件。邮件客户端用的POP3协议(110端口)来为你接收邮件的全部信息和全文内容保存到你的本地机器成为一个副本,你对邮件客户端上的副本邮件的任何操作都是在副本上,不干涉邮件服务器上为你保存的邮件原本。

上面介绍的SMTP协议、POP2协议、POP3协议、IMAP协议都是不安全的协议。因考虑到网络安全的因素,下面给你介绍基于SSL(SecureSockets Layer
安全套接层)协议的安全的邮件收发协议。你的邮件在传输过程中可能被网络黑客截取邮件内容,如果你的邮件机密性非常强,不想被收件人以外的任何人和任何黑客截取,或者是涉及国家机密安全的,等等。那么你的邮件就不该使用上述的三种协议进行收发。

若你采用SMTP协议发邮件,那么你发出的邮件从你的机器传到服务器的过程中,可能被黑客截取从而泄露。若你采用POP2或者POP3协议收取邮件,那么你的邮件从服务器传至你当前机器的过程可能被黑客截取从而泄露。

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

 

postfix 转发配置

 Postfix 转发服务器(192.168.0.188):

#填上被允许转发的主机IP 
mynetworks = 127.0.0.0/8 192.168.0.50

#允许转发的本地邮件列表

local_recipient_maps = hash:/etc/postfix/relay_recipients 

#允许转发的域名
relay_domains = domain.com

#允许转发的邮件列表
relay_recipient_maps = hash:/etc/postfix/relay_recipients 

#转发目的地

transport_maps = hash:/etc/postfix/transport 

[root@mail postfix]# cat relay_recipients 
@domain.com  ok

其中 ok为占为,格式需要

[root@mail postfix]# cat transport 
domain.cn relay:[192.168.0.50] 

 

最后对文件进行postmap操作,生成相应的xxx.db文件。

[root@mail postfix]# postmap relay_recipients 
[root@mail postfix]# postmap transport

 

 

 

 

其它一些参考:

     #客户端连接限制,只允许mynetworks定义的客户端连接并转发邮件
     smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
     #垃圾邮件黑名单设置(参考mail-abuse.org/bl.spamcop.net/zen.spamhaus.org网站定义的垃圾邮件黑名单)
     map_rb1_domains=mail-abuse.org, bl.spamcop.net, zen.spamhaus.org
     smtp_client_restrictions=reject_map1_rb1
     #邮件Subject内容过滤
     header_checks = regexp:/etc/postfix/header_checks
     #postfix能累计客户端曾经发生错误的次数,对于可疑的客户端,postfix会主动延迟响应的时间
     #而且错误次数越多,延迟时间越长。这些都是通过下面的参数进行设置
     #参数说明:初次的延迟时间由smptd_error_sleep_time参数决定(默认1秒),当客户端累积了
     #smtpd_soft_error_limit次错误之后,往后每发生一次错误,postfix就多延迟1秒,当错误次数
     #超过smtpd_hard_error_limit时,postfix就放弃该客户端,并主动断线
     smtpd_error_sleep_time = 1s
     smtpd_soft_error_limit = 10
     smtpd_hard_error_limit = 20
  b) 创建/etc/postfix/transport文件,并生成db文件
      i) 内容: dgcn.com  relay:[mail202.dgcn.com]
     ii) 生成db文件:运行命令postmap /etc/postfix/transport
  c) 创建/etc/postfix/header_checks文件
     内容如下:
         /^Subject:.*((业.*务)|(网?.*赚.*钱?)|(税))*$/    REJECT
         /^Subject:.*(([报海].*关)|([财税].*务)|([发机税].*票)|(合.*作)|(客.*户))*$/      REJECT
         /^Subject:.*((商.*务)|(免.*费)|(生.*意)|(禁.*片)|(成.*人)|(商.*品)|(贸.*易)|(找工作真)|(送票上门)|(商务合作)|(票据代开))*$/      REJECT
         /^Subject:.*((管.*理)|(人.*才)|(经.*理)|(主.*管)|(会.*计)|(供.*求)|(求.*供)|(特.*价)|(价.*[格值])|(资.*[讯信]))*$/       REJECT
         /^Subject:.*((电.*机)|(课.*程)|(产.*品)|(展.*览)|(互.*利)|(朋.*友)|(什么时候过来)|(金耀才)|(破解)|(林先生))*$/   REJECT
         /^Subject:.*((为你避税)|(文件定稿)|(优惠代开)|(人才兴旺网))*$/   REJECT
    
 

    4) 垃圾邮件过滤
       根据如上设置,postfix可接收并转发test.com网域的所有邮件,但postfix并不知道test.com网域有哪些收件人,这样就会导致postfix收下许多无效的test.com网域邮件,最终无法转发而积压,最终导致postfix崩溃
       解决办法:将test.com网域的所有有效邮箱同步到postfix,以便postfix能及时判断收到test.com网域邮件的有效性
       a) 修改/etc/postfix/main.cf
          添加:relay_recipient_maps = hash:/etc/postfix/relay_recipients
       b) 创建/etc/postfix/relay_recipients
          # touch /etc/postfix/relay_recipients
          文件内容:
          admin@test.com  OK 
          说明:admin@test.com: 表示test.com网域的有效邮箱
               OK:此处可以是任意字符串,因文件格式的需要,必须填写
       c) 生成数据库文件
           # postmap /etc/postfix/relay_recipients
     5) 测试:
        a) 外发邮件:
              根据上面mynetworks设置,postfix只能转发postfix所在主机或192.168.1.202主机的邮件,现在假设登录postfix所在主机,粗体部分是需要我们手动输入的内容
              测试步骤如下:
              telnet  localhost 25
              Trying 192.168.1.202...
              Connected to 192.168.1.202 (192.168.1.202).
              Escape character is '^]'.
              220 localhost.localdomain ESMTP Postfix
              helo test.com
              250 localhost.localdomain
              mail from:<test@test.com>
              250 2.1.0 Ok
              rcpt to:<zzban@126.com>
              250 2.1.5 Ok
              data
              354 End data with <CR><LF>.<CR><LF>
              Subject: this is a test mail
              This is test mail content
              .       (注意此处的点".",表示邮件内容的结束标记)
             250 2.0.0 Ok: queued as 88B3B2A68032
             quit
             221 2.0.0 Bye
             Connection closed by foreign host.
             这样邮件就发送出去了,你可以登录你的收件邮件看看有没有收到邮件。如果收到邮件,表示一切正常,结束。
          b) 内发邮件
                步骤同上,只需将mail from所示的发件人和rcpt to所示的收件人邮箱互换即可

postfix 技巧

1,快速查出系统有那些值得注意的事情:
#egrep '(reject|warning|error|fatal|panic):' /var/log/maillog
#tail -f /var/log/maillog |grep -e "Pass|LOGIN"
2,检查main.cf配置文件是否正确:
#postfix check

3,重启Postfix服务与重新载入配置:
#service postfix restart
#postfix reload

4,一封邮件最多几位收件人限制,默认1000,修改main.cf
smtpd_recipient_limit = 100

5,单封邮件容量上限,默认10MB,修改main.cf
message_size_limit = 10000000

6,客户端出错或恶意错误连接可用以下限制main.cf
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

7,改变投递地址,假如用户kevin@23day.com更换了新地址,使用以下方法提示其它用户:
(1)在/etc/postifx/main.cf中添加relocated_maps = hash:/etc/postfix/relocated参数
(2)touch /etc/postfix/relocated
在relocated中添加以下信息
kevin@23day.com 
  chen@23day.com
#postmap /etc/postfix/relocated
#postfix reload

8,网域更换
(1)在/etc/postifx/main.cf中添加relocated_maps = hash:/etc/postfix/relocated参数
(2)touch /etc/postfix/relocated
在relocated中添加以下信息
@23day.com   23day.cn
#postmap /etc/postfix/relocated
#postfix reload

9,邮件队列管理工具postqueue与postsuper
#postqueue -p查看邮件队列
如果队列序号加了*号表示为活动队列
如果队列序号加了!号表示为延期队列
如果队列序号没有*与!号表示为等待队列
#postsuper -d DBA3F1A9删除队列里的邮件
#postsuper -d ALL删除队列里所有的邮件
#postsuper -r ALL重新排队所有邮件
#postcat -q DBA3F1A9查看邮件内容

10,邮件转发设置将所有出站邮件转发到192.168.1.1服务器上main.cf
relayhost = 192.168.1.1

11,针对某个域的转发
#vi /etc/postfix/main.cf 新增transport_maps = hash:/etc/postfix/transport
#vi /etc/postfix/transport gmail.com  smtp:[192.168.1.10] 设定寄往gmail的邮件从192.168.1.10机器转发出去
#postmap /etc/postfix/transport
#postfix reload

12,CentOS4.7下挂载共享目录
#mount -t cifs -o username=extmailuser,password="mis[]229" //172.28.156.122/extmail /mnt

13,配置垃圾邮件策略行为"D_DISCARD->丢弃,D_PASS->通过,D_BOUNCE->返回"
#vi /etc/amavisd.conf 第115行到118行
$final_virus_destiny      = D_PASS;   
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_PASS;

14,单网卡又IP配置
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eth0 ifcfg-eth0:0
编辑ifcfg-eth0:0里的DEVICE参数为eth0:0
#service network restart

15,CentOS4.7使用代理上网(命令行上网)
编辑/etc/profile文件
#vi /etc/profile
http_proxy=192.168.1.1:3128  代理分别指定http,https,ftp
https_proxy=192.168.1.1:3128
ftp_proxy=192.168.1.1:3128
no_proxy=192.168.1.  局域网不使用代理
export http_proxy https_proxy ftp_proxy no_proxy
保存重启机器

16,拒绝某一IP发送邮件服务器(方法很多)
#vi /etc/postfix/main.cf
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/client_access
#vi /etc/postfix/client_access
192.168.1.5    REJECT   拒绝192.168.1.5发送邮件

17,使用代理升級CentOS(yum)
#vi /etc/yum.conf
proxy=http://192.168.1.55:3128
proxy_username=yum-user
proxy_password=yum-passwd

18,邮件队列处理方式4种队列
收件(incoming),活动(active),延迟(deferred),故障(corrupt)
新邮件第一站是"收件队列"如果系统资料空闲,会转到"活动队列",如果投递失败会被移入"延迟队列"

19,投递操作
Postfix以收件人地址类型判断如何投递邮件,主要地址类型及投递顺序为本地(local),虚拟别名(Virtual alias),虚拟邮箱(virtual mailbox)以及转发(relay).

20,clamav杀毒软件RPM下载地址http://packages.sw.be/clamav/
下载最新版然后使用rpm -Uvh升级.

21,mysql导出查询结果
mysql>select name,username from mailbox into outfile 'mail.txt' fields terminated by ',';
默认导出文件在/var/lib/mysql/extmail目录

21,全局通讯录生成方法
首先使用21项导入数据,然后使用excel编辑保存成csv档,再将数据复制到globabook.cf中就可以了(官方现有批perl工具,非常好用,这是不知道这工具之前想的办法)

22,添加静态路更新freshclam(未验证是否成功)
61.177.194.0    192.168.1.118  255.255.255.0

23,使用rsync同步home目录
Server配置:
#vi /etc/xinetd.d/rsync 将disable改为no
#vi /etc/rsyncd.conf 添加以下内容
[extmail]
path=/home/domains
auth users=admin
uid=root
gid=root
secrets file=/etc/rsyncd.secrets
read only=yes
#vi /etc/rsyncd.secrets 添加以下内容
admin:password
#chmod 600 /etc/rsyncd.secrets
#/etc/xinit.d/xinetd restart
Client配置:
vi /etc/rsyncd.secrets添加密码"password"
#rsync -vzrtopg --delete --progress admin@192.168.1.1::extmail /home/domains --password-file=/etc/rsyncd.secretes

24, freshclam使用代理升级病毒库(其实很简单,找得好辛苦)
#vi /etc/freshclam.conf 将此配置文件的以下代理设置打开就可以了
HTTPProxyServer 192.168.1.9
HTTPProxyPort 3128

25,改变投递地址
#vi main.cf
relocated_maps = hash:/etc/postfix/relocated
#vi relocated
old@test.com    new@test.com
#postmap relocated

26,传输表(邮件网关可用),使用relay参数将mail.23day.com的邮件直接转发到192.168.1.9主机上
#vi main.cf
transport_maps = hash:/etc/postfix/transport
#vi transport
mail.23day.com    relay:[192.168.1.9]
#postmap transport
#postfix reload

27,bcc监视用户邮件main.cf
always_bcc = postmaster@doamin.com
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps
sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps
#touch /etc/postfix/recipient_bcc_maps
a@abc.com  b@abc.com
#touch /etc/postfix/sender_bcc_maps
#postmap /etc/postfix/recipient_bcc_maps
#postmap /etc/postfix/sender_bcc_maps

28,查询与统计用户发送与接收了多少邮件
a)npg001@21cn.com发送了多少邮件进来
egrep npg001@21cn.com /var/log/maillog |grep Pass |grep -v 172.28.156 |wc -l
egrep chenle@npg-group.com /var/log/maillog |grep Pass |grep 172.28.156.90 |wc -l
egrep chenle@npg-group.com /var/log/maillog |grep Pass |grep -v 172.28.156.90 |wc -l

29,header_checks邮件过滤
将所有发给chinanpg@126.com的邮件转发到twork@21cn.com
/^To:.*chinanpg@126\.com*/ REDIRECT        twork@21cn.com
删除来源地址为cn99.com的所有邮件并在日志显示deletecn99信息
/^From:.*@*\.cn99\.com/     DISCARD deletecn99
拒绝twork@21cn.com发往本域的邮件,将返回错误信息给发送者
/^From:.*twork@21cn\.com/        REJECT  rejectspam