iredmail
1.邮件服务器一定要有一个合法注册过的主机名才可以
2.由于目前收集端的邮件服务器会针对邮件来源的IP进行反解,而如果你的网络环境是由拨号取得而非固定的IP时,该种IP在ISP方面通常主动的以xxx.dynamic.xxx之类的主机名来管理,偏偏这样的主机名会被主要的大型邮件服务器视为垃圾邮件,所以,如果你想架设一台Mail Server的话,请务必向你的上层ISP申请反解的对策,不要再使用默认的反解主机名。
3.MX标志一定要设置正确,否则你的邮件将可能会被直接被MX服务器中踢掉,当我们没有上层邮件服务器时,为了要设置MX,你可以指定MX为自己,利用自己当MX服务器。(Mail eXchanger)
 
4.MUA(Mail User Agent):Outlook Express等,主要的功能是收取邮件主机的电子邮件,提供用户  浏览与编写邮件。
5.MTA(Mail Transfer Agent):功能接收邮件,转发邮件。
6.MDA(Mail Delivery Agent):邮件传送代理人,分析由MTA所收到的邮件表头或内容等数据,来决定这封邮件的去向,过滤垃圾邮件,自动回复。
7.Mailbox:取得邮件
8.MRA(Mail Retrieval Agent):用户可以通过MRA服务器提供的邮政服务协议POP来接收自己的邮件,也可以通过IMAP协议将自己的邮件保留在邮件主机上面,并进一步进行建立邮件数据文件夹等高级工作。MUA通过POP3的协议连接到MRA的Port110。
9.POP3协议会下载完全部的邮件,但会将下载完的邮件从服务器删除
10.要架设一台可以使用MUA进行收发邮件的MTA、MRA服务器,至少需要启动SMTP及POP3这两个协议才行。
11.加密:POP3s、IMAPs、SMTPs(实际上没有用)
12.如果所有的人都可以通过这一台MTA帮忙进行Relay时,这个情况称之为Open Relay的操作。
13.认证机制常见的有SMTP邮件谁机制,以及SMTP After POP这两种
14.标题分析通过后,你的邮件内容才会开始上传到主机的队列,然后通过MDA来处理改邮件的流向,而不是将邮件完整地传送到主机后才开始分析。
15.在暂不考虑Access以及MDA的分析机制中,一台MTA想要正确地收发邮件时,电子邮件必须要符合以下需求。
收信:1.发信端必须符合$inet_interfaces
      2.收件人主机名符合$mydestination或$virtual_maps
转发:1.发信端必须符合$inet_interfaces
      2.发信来源必须为$mynetworks的设置;发信来源或邮件标题的收件人主机名符合        $relay_domains的设置内容。
      
16.当主机收到一封邮件且这封邮件的目标是自己,并且也符合mydestination的设置时,该邮件就会被接收而不必验证客户端是否来自于mynetworks了。
 
[root@www ~]# echo "fox" | mail -s "from szm"  szm
[szm@www root]$ cat /var/spool/mail/szm  
From root@www.Centosszm.com  Tue Apr 16 10:18:53 2013   #发件人邮箱
Return-Path: <root@www.Centosszm.com>   #邮件来源
X-Original-To: szm     #收件人
Delivered-To: szm@www.Centosszm.com
Received: by www.Centosszm.com (Postfix, from userid 0)
        id 36BA32CFE; Tue, 16 Apr 2013 10:18:52 +0800 (CST)
Date: Tue, 16 Apr 2013 10:18:52 +0800  #收邮件日期
To: szm@www.Centosszm.com   #收件人邮箱
Subject: from szm           #邮件标题
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20130416021853.36BA32CFE@www.Centosszm.com>
From: root@www.Centosszm.com (root)
 
fox
 
 
软件结构:
/etc/postfix/main.cf    #主配置文件
/etc/postfix/master.cf  #程序工作参数配置
/etc/postfix/access(利用Postmap处理) #
/etc/aliases(利用Postalias或Newaliases)
/usr/sbin/postconf(列出配置,要列出非默认配置用postconf -n)
/usr/sbin/postfix(主文件)
/usr/sbin/postalias(转换为数据库文件)
/usr/sbin/postcat(查看队列邮件内容)
/usr/sbin/postmap(转换Access文件的数据库)
/usr/sbin/postqueue(postqueue -p==mailq)
 
[root@www ~]# postfix check
postfix: warning: valid_hostname: misplaced delimiter: www.Centosszm.com.
postfix: fatal: unable to use my own hostname
 
[root@www ~]# vim /etc/postfix/main.cf
myhostname = www.Centosszm.com    #注意,这里后面没有.
 
[root@www ~]# netstat -tlnp | grep 25
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      8555/master
 
[root@www ~]# vi /etc/postfix/main.cf
#支持变量$
#支持变量两个以上的数据
#mydestination = $myhostname, localhost.$mydomain, localhost
#支持设置换行(第一行最后有逗号,下一行开始空格)
#若重复设置某一项目,则以较晚出现的设置值为准
 
myhostname = www.Centosszm.com
#mydomain = domain.tld   #自动设置成主机名第一个点后面的内容
 
#myorigin = $myhostname  #Mail from 的项目自动添加
 
#inet_interfaces = all   #监听所有,默认人监听127.0.0.1
 
inet_protocols = all     #监听协议(ipv4...)
 
#能够收信的主机名,可以写成外部文件的形式,如果你的DNS里面设置有MX标志的话,那么名字要写入下面这里才行。
mydestination = $myhostname, localhost.$mydomain, localhost
 
#网络类型,class,subnet,host可以不设,下面的设置会覆盖上面
#mynetworks_style = class
 
#可以Relay,转发的网络
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
 
#可以帮忙Relay的下一台MTA主机地址,默认设置如下
#relay_domains = $mydestination
 
#alias_maps = dbm:/etc/aliases
 
 
[root@www ~]# grep -v [#] /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
 
#设置如下
myhostname = www.Centosszm.com
myorigin = $myhostname
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, linux.Centosszm.com, ftp.Centosszm.com
 
unknown_local_recipient_reject_code = 550
 
#设置如下
mynetworks = 192.168.179.0/14, 127.0.0.0/8, hash:/etc/postfix/access
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
 
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
 
[root@www ~]# postmap hash:/etc/postfix/access
[root@www ~]# postalias hash:/etc/aliases
 
[root@www ~]# postfix start
postfix/postfix-script: starting the Postfix mail system
[root@www ~]# postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 12332
postfix/postfix-script: the Postfix mail system is running: PID: 12332
[root@www ~]# netstat -tulnp | grep :25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      12332/master
 
设定邮件主机权限与过滤机制:/etc/postfix/access
[root@www ~]# vim /etc/postfix/access
192.168.179.2   OK
.edu.tw         OK
av.com          REJECT
192.168.2.      REJECT
 
[root@www ~]# postmap hash:/etc/postfix/access
[root@www ~]# ll /etc/postfix/access*
-rw-r--r--. 1 root root 19641 Apr 16 21:23 /etc/postfix/access
-rw-r--r--. 1 root root 12288 Apr 16 21:24 /etc/postfix/access.db #生成这个文件
#上面这个方法的好外是不用重启Postmail
 
 
设定邮件别名:(邮件的代理接收人)
[root@www ~]# vim /etc/aliases
bin:            root
daemon:         root
adm:            root
lp:             root
sync:           root
shutdown:       root
halt:           root
...................
smb1:           szm
 
[root@www ~]# postalias hash:/etc/aliases
[root@www ~]# ll /etc/aliases*
-rw-r--r--. 1 root root  1523 Apr 16 21:28 /etc/aliases
-rw-r--r--. 1 root root 12288 Apr 16 21:28 /etc/aliases.db #生成这个文件
 
#让一般账号可接收root的邮件,root和szm都有一份邮件
[root@www ~]# vim /etc/aliases
root:           root,szm
 
[root@www ~]# postalias hash:/etc/aliases
 
配置组寄信功能:
[root@www ~]# vim /etc/aliases
student100:      std001,std002,std003,std004,.....   #组名是不存在的
[root@www ~]# postalias hash:/etc/aliases
 
邮件抄送:
[root@www ~]# vim /etc/aliases
shen:           szm,464421145@qq.com
[root@www ~]# postalias hash:/etc/aliases
 
普通用户邮件转递:~/.forward
[szm@www ~]$ vim .forward
szm
root  #抄送
464421145@qq.com  #抄送
 
[szm@www ~]$ chmod 644 .forward
 
查看邮件队列信息:postqueue、mailq
邮件发送失败警告:5分钟、4小时、5天后退回
[szm@www ~]$ postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
9B60B2CFA     14157 Tue Apr 16 10:06:23  MAILER-DAEMON
(Host or domain name not found. Name service error for name=Centosszm.test.com type=MX: Host not found, try again)
                                         SELinux_Troubleshoot@Centosszm.test.com
 
-- 14 Kbytes in 1 Request.
 
查看队列邮件:
[root@www postfix]# postcat defer/9/9B60B2CFA
postcat: warning: defer/9/9B60B2CFA: input is not a valid queue file
[root@www postfix]# postcat deferred/9/9B60B2CFA
 
把这个邮件立即寄出去有两种方法:
[root@www postfix]# /etc/init.d/postfix restart
[root@www postfix]# postfix flush
 
防火墙设置:
[root@www postfix]# iptables -A INPUT -p tcp --dport 25 --sport 1024:65534 -j ACCEPT
 
MRA服务器设定:(无加密)
[root@www postfix]# yum install dovecot
 
[root@www ~]# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
 
[root@www ~]# netstat -tulnp | grep dovecot
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN      13149/dovecot 
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN      13149/dovecot 
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      13149/dovecot 
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      13149/dovecot 
tcp        0      0 :::993                      :::*                        LISTEN      13149/dovecot 
tcp        0      0 :::995                      :::*                        LISTEN      13149/dovecot 
tcp        0      0 :::110                      :::*                        LISTEN      13149/dovecot 
tcp        0      0 :::143                      :::*                        LISTEN      13149/dovecot 
 
加密的POP3s/IMAPs设定:
[root@www certs]# make dovecot.pem     #产生证书
umask 77 ; \
        PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
        cat $PEM1 >  dovecot.pem ; \
        echo ""    >> dovecot.pem ; \
        cat $PEM2 >> dovecot.pem ; \
        rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
...................+++
................+++
writing new private key to '/tmp/openssl.NnRfEr'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:02
State or Province Name (full name) []:GD
Locality Name (eg, city) [Default City]:GZ
Organization Name (eg, company) [Default Company Ltd]:szmO
Organizational Unit Name (eg, section) []:szm
Common Name (eg, your name or your server's hostname) []:shen
Email Address []:qq@qq.com
 
[root@www certs]# mv dovecot.pem /etc/pki/dovecot/
[root@www certs]# restorecon -Rv /etc/pki/dovecot/
restorecon reset /etc/pki/dovecot/dovecot.pem context unconfined_u:object_r:cert_t:s0->system_u:object_r:dovecot_cert_t:s0
 
[root@www certs]# vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
 
[root@www certs]# vim /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
 
[root@www certs]# vim /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    #port = 143
    port = 0            #修改
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
service pop3-login {
  inet_listener pop3 {
    #port = 110
    port = 0             #修改
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}
 
[root@www certs]# /etc/init.d/dovecot restart
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]
[root@www certs]# netstat -tulnp | grep dovecot
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN      13307/dovecot 
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN      13307/dovecot 
tcp        0      0 :::993                      :::*                        LISTEN      13307/dovecot 
tcp        0      0 :::995                      :::*                        LISTEN      13307/dovecot 
#处理额外的Mail_location设置值,很重要,否则网络收信会失败
[root@www certs]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
 
POPs/Imaps防火墙做设置:
[root@www certs]# iptables -A INPUT -p tcp --dport 993 --sport 1024:65534 -j ACCEPT
[root@www certs]# iptables -A INPUT -p tcp --dport 995 --sport 1024:65534 -j ACCEPT
 
MUA软件:客户端的收发邮件软件
[root@www certs]# mail szm@www.Centosszm.com
Subject: test
this is content
bye
.
EOT
 
[root@www certs]# mail -s "mail bashrc" szm < /home/szm/.bashrc
 
#su - username 携带环境变量
#su username 只是切换用户,但是环境变量还是之前用户的
 
 
[szm@www certs]$ su - szm
 
[szm@www ~]$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/szm": 3 messages 3 new
>N  1 root                  Tue Apr 16 10:18  18/570   "from szm"
 N  2 root                  Tue Apr 16 22:55  19/600   "test"
 N  3 root                  Tue Apr 16 22:57  25/693   "mail bashrc"
 
依次读取邮件:Enter
显示标题:h
回复邮件:r
删除邮件:d  d1-3
存储邮件:s  s 1 mail.txt
离开邮件:q  x(x是保存退出,q是不保存退出)
请求协助:help
 
查看保存为文件的邮件
[szm@www ~]$ mail -f mail.txt
[szm@www ~]$ cat mail.txt
 
以“添加附件”的方式寄信
[root@www szm]# yum install sharutils
[root@www szm]# uuencode /etc/hosts myhosts | mail -s 'test encode' szm
uuencode [附件] [附件名称] | mail -s '标题' 内容
 
[root@www szm]# su - szm
[szm@www ~]$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/szm": 3 messages 1 new
    1 root                  Tue Apr 16 22:55  20/611   "test"
    2 root                  Tue Apr 16 22:57  26/704   "mail bashrc"
>N  3 root                  Tue Apr 16 23:10  25/879   "test encode"
& 3
Message  3:
From root@www.Centosszm.com  Tue Apr 16 23:10:07 2013
Return-Path: <root@www.Centosszm.com>
X-Original-To: szm
Delivered-To: szm@www.Centosszm.com
Date: Tue, 16 Apr 2013 23:10:07 +0800
To: szm@www.Centosszm.com
Subject: test encode
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@www.Centosszm.com (root)
Status: R
 
begin 644 myhosts
M,3(W+C`N,"XQ"7=W=RY#96YT;W-S>FTN8V]M+@EW=W<);&]C86QH;W-T+FQO
M8V%L9&]M86EN"6QO8V%L:&]S=`HZ.C$)=W=W+D-E;G1O<W-Z;2YC;VTN"7=W
M=PEL;V-A;&AO<W0V+FQO8V%L9&]M86EN-@EL;V-A;&AO<W0V"C$Y,BXQ-C@N
M,3<Y+C<):'1M;"YS>FTN8V]M"C$Y,BXQ-C@N,3<Y+C<)=W=W+G-Z;2YC;VT*
:,3DR+C$V."XQ-SDN-PEF='`N<WIM+F-O;0H`
`
end
 
& s 3 test_encode    #保存邮件
"test_encode" [New file] 27/900
& exit
[szm@www ~]$ uudecode test_encode -o decode
[szm@www ~]$ ll *code*
-rw-r--r--. 1 szm szm 206 Apr 16 23:12 decode
-rw-rw-r--. 1 szm szm 889 Apr 16 23:12 test_encode
[szm@www ~]$ cat decode
127.0.0.1       www.Centosszm.com.      www     localhost.localdomain   localhost
::1     www.Centosszm.com.      www     localhost6.localdomain6 localhost6
192.168.179.7   html.szm.com
192.168.179.7   www.szm.com
192.168.179.7   ftp.szm.com
 
让附件可以通过POP3/IMAP之类的协议去读取外部的邮件;
[root@www szm]# yum install mutt
#副本:收件人知道被抄送
#抄送:收件人不知道被抄送
#mutt [-a 附件] [-i 正文] [-b 抄送] [-c 副本] [-s 标题] E-mail地址
 
1.在VIM下编辑好
2.y发送
 
注意发送附件的格式:
[root@www szm]# mutt -s 'mutt fujian' -a /usr/bin/passwd -- szm@www.Centosszm.com
 
 
以mutt来读不同通信协议的邮箱:
保存邮件:s
[root@www szm]# chmod a+x /home/szm/
[root@www szm]# mutt -f imaps://www.Centosszm.com.
这样就可以看到szm这个用户的邮件了
 
邮件服务器高级设定:
Postgrey:若发信来源同一封信第一次寄来时,Postgrey默认会过滤他,并且将来源地址记录起来,在约5分钟后,若该邮件又传来一次时,则该邮件会被收下来。如此一来可以杜绝非法邮件服务器单次发送的问题。但对于你确定合法的主机则可以开放所谓的“白名单”。
http://postgrey.schweikert.ch/
http://www.postfix.org/SMTPD_POLICY_README.html
安装问题:因为是Perl写的,所以要加入很多相关的Perl模块才行。
Berkeley DB:包括db4,db4-utils,db4-devel...
Perl:yum install perl
perl模块:perl-Net_DNS是Centos本身有提供的,没有的可以到这里下载:http://rpmfind.net
RPMYUm源:
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge
 
[root@www share]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@www share]# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm
[root@www ~]# yum install postgrey
 
Postgrey是本机的Socket服务而非网络服务。
[root@www ~]# /etc/init.d/postgrey start
Starting postgrey:                                         [  OK  ]
[root@www ~]# netstat -anlp | grep ostgrey
unix  2      [ ACC ]     STREAM     LISTENING     220471 15929/socket        /va r/spool/postfix/postgrey/socket
#/va r/spool/postfix/postgrey/socket是用来作为程序之间的数据交换,这也是Postfix要将邮件交给Postgrey处理的一个相当重要的接口。
 
[root@www ~]# vim /etc/postfix/main.cf
smtpd_recipient_restrictions =
 permit_mynetworks,
 reject_unknown_sender_domain,     #不明来源
 reject_unknown_recipient_domain,  #不明目标
 reject_unauth_destination,        #不信任目标
 check_policy_service unix:/var/spool/postfix/postgrey/socket #启用postgrey
 
#把原来的300秒改为60秒
[root@www ~]# vim /etc/sysconfig/postgrey
OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"
 
[root@www ~]# /etc/init.d/postfix restart
[root@www ~]# /etc/init.d/postgrey restart
 
添加白名单:
[root@www szm]# vim /etc/postfix/postgrey_whitelist_clients
www.Centosszm.com
 
黑名单过滤机制:
http://cbl.abuseat.org/
smtpd_recipient_restrictions =
 permit_mynetworks,
 reject_unknown_sender_domain,
 reject_unknown_recipient_domain,
 reject_unauth_destination,
 reject_rbl_client cbl.abuseat.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client cblless.anti-spam.org.cn,
 reject_rbl_client sbl-xbl.spamhaus.org,
 check_policy_service unix:/var/spool/postfix/postgrey/socket
 
smtpd_client_restrictions =
 reject_rbl_client cbl.abuseat.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client cblless.anti-spam.org.cn,
 reject_rbl_client sbl-xbl.spamhaus.org,
#拒绝黑名单客户端
 
smtpd_sender_restrictions = reject_non_fqdn_sender,
 reject_unknown_sender_domain
#此项目在过滤不明的发件人主机网络。与DNS有关系
 
查找自己的主机是否在黑名单中http://cbl.abuseat.org/lookup.cgi
 
测试自己的主机是否有Open Relay
http://rs.edu.tw/tanet/spam.html
 
基础的邮件过滤机制:
[root@www szm]# vim /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
regexp是正则表达式的意思
 
[root@www szm]# touch /etc/postfix/body_checks
[root@www szm]# /etc/init.d/postfix restart
 
http://linux.vbird.org/linux_server/0380mail/header_checks
http://linux.vbird.org/linux_server/0380mail/body_checks
语法检查:
[root@www ~]# postmap -q - regexp:/root/body_checks < /root/body_checks
 
非信任来源的Relay:开放SMTP身份认证
Cyrus SASL(http://cyrusimap.web.cmu.edu/)是Cyrus simple Authentication and Security layer的缩写,它是一个辅助的软件。在SMTP认证方面,Cyrus主要提供了saslauthd这个服务来进行账号密码的比对操作
 
直接通过Linux自己的账号密码来进行SMTP谁功能:
1)安装cyrus-sasl、cyrus-sasl-plain、cyrus-sasl-md5
2)启动saslauthd这个服务
3)设置Main.cf让postfix可以与saslauthd联系
4)客户端必须要寄信时设置邮件主机认证功能
 
查看支持的认证:
[root@www ~]# saslauthd -v
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
 
[root@www ~]# vim /etc/sysconfig/saslauthd
MECH=pam
 
[root@www ~]# /etc/init.d/saslauthd start
 
告知Cyrus使用来提供SMTP服务的程序为saslauthd才行
[root@www ~]# vim /etc/sasl2/smtpd.conf
log_level:3
pwcheck_method: saslauthd   #选择什么服务来负责密码对比
mech_list: plain login      #支持的机制有哪些
 
 
smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,   #重点是这里,注意顺序
 reject_unknown_sender_domain,
 reject_unknown_recipient_domain,
 reject_unauth_destination,
 reject_rbl_client cbl.abuseat.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client cblless.anti-spam.org.cn,
 reject_rbl_client sbl-xbl.spamhaus.org,
 check_policy_service unix:/var/spool/postfix/postgrey/socket
 
smtpd_client_restrictions =
 reject_rbl_client cbl.abuseat.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client cblless.anti-spam.org.cn,
 reject_rbl_client sbl-xbl.spamhaus.org,
 
smtpd_sender_restrictions = reject_non_fqdn_sender,
 reject_unknown_sender_domain
 
#启动SSL认证,启动后会加载cyrus sasl的函数库,而该函数库会依据/etc/sasl2/smtpd.conf的设置来链接到正确的管理员与密码的服务
smtpd_sasl_auth_enable = yes
#不想让匿名用户可以登录使用SMTP的Relay功能
smtpd_sasl_security_options = noanonymous
#针对早期非正规MUA的设置项目。
broken_sasl_auth_clients = yes
 
[root@www ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.Centosszm.com ESMTP Postfix
ehlo localhost         #
250-www.Centosszm.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit                   #
221 2.0.0 Bye
Connection closed by foreign host.
 
[root@www ~]# tail -n 100 /var/log/maillog | grep PLAIN
 
非固定IP邮件服务器的福音:relayhost
前提:
1)需要一个合法的主机名,若要省钱,可以使用DDNS来处理;
2)你上层的ISP所提供的MTA必须要有提供你所在IP的Relay权限。
你不能使用自定义的内部DNS架构了,因为所有Relay的信都会被送至ISP的MTA。
 
[root@www ~]# vim /etc/postfix/main.cf
relayhost = ms1.hinet.net
[root@www ~]# /etc/init.d/postfix restart
 
[root@www ~]# tail -n 20 /var/log/messages
#这里可以看到邮件是通过上层ISP来转发的
 
单封邮件大小限制:
message_size_limit = 40000000    #40M
[root@www ~]# /etc/init.d/postfix reload
 
[root@www ~]# vim /etc/postfix/main.cf
mailbox_size_limit=1000000000    #每个邮件账户10G/var/spool/mail/account
[root@www ~]# /etc/init.d/postfix reload
 
发件备份:SMTP自动转发一份到备份文件夹
[root@www ~]# vim /etc/postfix/main.cf
always_bcc = some@host.name
[root@www ~]# /etc/init.d/postfix reload
 
配置文件权限问题:权限错误不能启动Postfix
644  /etc/aliases
系统队列目录:/var/spool/mqueue或/var/spool/postfix仅允许系统读取700
 
备份资料:
/etc/passwd,/etc/shadow/,/etc/group
/etc/mail,/etc/postfix/
/etc/aliases
/home
/var/spool/mail,/var/spool/postfix