Postfix多实例的简单应用(一)
一、简介:
1.基于RedHat linux5的postfix在以前已经发表过了,有助于了解postfix在linux上面的简单安装;
2.今日将在CentOS 5.3上进一步将多个postfix实例安装在同一台linux系统上;
大多数邮件服务器公司也无非是借助于postfix.org的官方文档,来布置更多的postfix用于实际需要!
更多详情: http://www.postfix.org/MULTI_INSTANCE_README.html
二、安装说明:
1.多实例的支持需要postfix2.6或更高版本;
每个实例必须独立的hostname;
学习的重要在于邮件原理、高级应用、故障排除;
2.什么是多个实例?
postfix是一个通用的邮件系统,能提供邮件的各种应用,应用实例有:
为shell的用户和系统进程本地邮件;
接受(MX主机)从互联网得到的电子邮件;
为本公司网路邮件的中继;
漫游用户提交的身份验证;
邮件接受的前后过滤;
3.多实例的工作原理
Postfix的配置可以提供多种服务,所有的这些设置都是一个复杂的相互作用的设置,主要:main.cf和master.cf首要选择;
多实例的应用就是让每一个实例做好一份工作,当实现邮件中心专门为Internet电子邮件服务器,专业提供EDM电子邮件发送;
在没有高要求下完全不需要多实例应用;
多实例就是在原有的基础上,再配置运行另外更多的与默认的postfix相同的服务;
4.postfix系统的组成部分
配置文件和邮箱存放位置,日志记录等;
5.postfix默认的实例
默认的实例在编译安装过程中/etc/postfix目录下,而其的spool在/var/spool/下的postfix;
6.多实例的配置及相关参数
配置:
#postmulti -e init //只有第一次使用来添加第二实例时执行初始化;
#postmulti -I postfix-sen -G mta -e create //创建postfix-sen这个实例;
#postmulti -i postfix-sen -x postconf -e \
"master_service_disable =" "authorized_submit_users = root"
//配置此实例为可用用状态,用户为root;
#postmulti -i postfix-sen enable //进入enable状态;
#postmulti -i postfix-sen start //启动postfix-sen实例;
更正说明:2011-11-22
// #postmulti -i postfix-sen enable 应增加 -e 参数
// #postmulti -i postfix-sen start 应增加 -p 参数
正确为:
# postmulti -i postfix-sen -e enable
#postmulti -i postfix-sen -p start
7.修改参数使之工作起来:
#vim /etc/postfix-sen/main.cf
----------------------------------------------------------------
queue_directory = /var/spool/postfix-sen //邮件的存放位置;
command_directory = /usr/sbin //命令目录;
daemon_directory = /usr/libexec/postfix //进程目录;
data_directory = /var/lib/postfix-sen //数据目录;
mail_owner = postfix //邮件所有者;
myhostname = sen.55tgo.com //postfix使用的主机名;
mydomain = 55tgo.com //域名;
myorigin = $myhostname
unknown_local_recipient_reject_code = 550 //拒绝代码550;
mynetworks = 192.168.1.1,192.168.2.1 //所在的网络,或者是想让那个网络使用此实例;
debug_peer_level = 2 //调试级别;
sendmail_path = /usr/sbin/sendmail //通用的sendmail的命令位置;
newaliases_path = /usr/bin/newaliases //别名位置;
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = no
master_service_disable = //值为空即可;
authorized_submit_users = root //此五项为创建实例时自动生成的;
multi_instance_group = mta //一般为固定格式;
multi_instance_name = postfix-sen //这的实例时postfix-sen,视情况而定;
multi_instance_enable = yes //当然是yes状态,否则你没法使用;
新增参数说明:2011-11-22
多实例为多IP用,如果一个实例要绑定某个IP,则在后面手工增加多一个配置: smtp_bind_address=xxx.xxx.xxx.xxx,这时候发出的邮件才会显示此来源IP
---------------------------------------
#vim /etc/postfix-sen/master.cf //只需要配置修改这一行即可;
192.168.1.1:25 inet n - n - 50 smtpd
//绑定postfix使用的端口为25号,可自定义;
8.启动与测试:
#postfix -c /etc/postfix-sen reload //使用命令只重载此实例即可;
#postfix -c /etc/postfix-sen start //启动此实例;
#netstat -tnlp |grep :25 //查看25号端口是否启用;
说明:新手容易在这出现端口被占用 ,而无法启用此实例,解决方法:查看日志,更换端口,关闭sendmail服务;
9.检测邮件服务器能否使用:
#telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to sen.55tgo.com (192.168.1.1).
Escape character is '^]'.
220 sen.55tgo.com ESMTP Postfix
helo sen.55tgo.com
250 sen.55tgo.com
mail from:<
[email protected]> //可使用任意名,重要的是55tgo.com;
250 2.1.0 Ok
rcpt to:<
[email protected]> //在网易126申请的邮箱;
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
postfix test B
.
250 2.0.0 Ok: queued as 24B72B18042
quit
221 2.0.0 Bye
Connection closed by foreign host.
# grep 24B72B18042 /var/log/maillog
Sep 29 10:33:06 loaodun-212-45 postfix-sen/smtpd[3343]: 24B72B18042: client=sen62.55tgo.com[192.168.1.1]
Sep 29 10:33:15 loaodun-212-45 postfix-sen/cleanup[3354]: 24B72B18042: message-id=<
[email protected]>
Sep 29 10:33:15 loaodun-212-45 postfix-sen/qmgr[3348]: 24B72B18042: from=<
[email protected]>, size=369, nrcpt=1 (queue active)
Sep 29 10:33:16 loaodun-212-45 postfix-sen/smtp[3355]: 24B72B18042: to=<
[email protected]>, relay=126mx01.mxmail.netease.com[192.168.1.1]:25, delay=30, delays=28/0/1.3/0.2, dsn=2.0.0, status=sent (250 Mail OK queued as mx23,KcmowKD7j6+PpaJMvS4oBQ--.107S2 1285727632)
Sep 29 10:33:16 loaodun-212-45 postfix-sen/qmgr[3348]: 24B72B18042: removed
//但看到status=sent表明邮件已经发送成功,下面去 mail.126.com查看邮件吧!
-----------------------------------------------------------------------------
7.postfix管理命令
生成数据库 postmap hash:/etc/postfix/access
显示信件列表: postqueue -p
显示信件�热荩� postcat -q Queue_ID //Queue_ID为信件代号;
�h除各�e信件:postsuper -d Queue_ID
全部�h除: 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
[email protected]
重新加载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 //查看此邮件在邮件服务器发送状态;
-----------------------------------------------------------------------
笔者细语:
到现在终于在十一之前完成了需要上线的项目,在今天交接完成,还好中午空余时间写下心得,希望对大家在使用postfix时有些帮助;
提供专业的edm邮件发送、提供技术支持;E-mail:
[email protected]
------------------------------------------------------------------------