随着社会的进步,科技的发展,操作系统越来越受到广大用户的关注,而Suse也越来越受到重视。你是否了解怎样完成Suse Postfix配置呢?今天我们就讲讲Suse Postfix配置学习问题。Postfix默认值
Postfix采用默认值启动时有2个重要特性:
1.只在127.0.0.1的port25上Listen(inet_interfaces=127.0.0.1)也就是不管是MUA或MTA要寄信给postfix,postfix一概不接受。这样除非是登入到主机,利用mail指令寄信外,便无法寄信。
2.允许一个网段的主机转发信件/Reply(mynetwork_style=subnet)。事务上,通常利用Postfix中的mynetworks来限制允许Relay的主机范围。
因为Suse默认是利用YaST来设定Postfix,如想自己手动设置postfix,需修改/etc/sysocnfig/mail中
MAIL_CREATE_CONFIG="yes"-->no
SMTPD_LISTEN_REMOTE="no"-->yes
过滤掉main.cf中的说明内容,可以使用这条命令:#grep'^[^#]'/etc/postfix/main.cf
建议是在过滤前备份原文件,文件中的说明是非常有用的,唯一的缺点是E文的。
myhostname
此为mailserver的主机名,如果安装时有设置或者使用YaST修改过主机名,此选项默认会被设置,当然,检查下最好了。
例如:myhostname=mailtest.tm
mydomain
此为设置域名,在main.cf中没有这个设定值,其默认值就是你设置主机名时候的域名名称。
例如:mydomain=mailtest.tm
mail:#postconfmydomain
mydomain=mailtest.tm
inet_interface(解除只在127.0.0.1的port25上监听的限制)
默认值为127.0.0.1,会造成外部MUA,MTA无法跟postfix交互,建议更改为all。也可以使用postconf指令来修改,如下:
mail:~#postconfinet_interfaces
inet_interfaces=127.0.0.1::1<-127.0.0.1
mail:~#postconf-e'inet_interfaces=all'<-利用postconf指令修改
mail:~#postconfinet_interfaces
inet_interfaces=all
mynetworks_style设定允许relay邮件的具体方式,默认值为:subnet,主要有以下3种方式:
class:会根据服务器设置的IP地址属于A/B/C中的哪一类地址,来决定允许relay的服务器
例如mailserver地址为220.11.35.2,则允许所有220.x.x.x的IP都可以利用你的mailserver来做邮件转发relay,这个是非常危险的,你的mailserver非常容易成为垃圾邮件的载体,强烈建议,不使用class方式
subnet:根据mailserver的IP及netmask计算,只允许同一个网段的主机利用你的mailserver来relay邮件。
host:如设定为host,则只允许localhost可以relay邮件
mynetworks(允许IP/netmask及本机可以realy邮件)
指定可以使用此mailserver来relay邮件的IP/netmask。如果mynetwoks跟mynetworks_style同时设置,则myneworks会覆盖mynetworks_style的值。
myorigin
当使用mail命令来收发邮件时,如果没有指定@mailtest.tm,postfix会自动根据myorigin中的设置,来自动补齐地址。
mydestination
此参数非常重要,postfix默认使用此参数来判断收到的信件是否为本地信件,其默认值应该包含$myhostname
使用postconf命令时,后面的参数,请用单引号',勿用双引号"。
Suse使用qpopper作为pop3工具
没有的话,自己安装下,安装完成后,使用如下命令进行检查及启动服务,qpopper是由xinetd服务来管理的,所以重启是需要启动xinetd,当然首先是要确定服务是on的
#chkconfig--listqpopper
#chkconfigqpopperon
#rcxinetdrestart
mailserver的DNS,默认使用/etc/resolv.conf中设置的dns服务器来做解析,所以,完全没有必要在mailserver上再架设DNSserver。当然,你有兴趣搞定,那是perfect。笔者尝试过powerdns+dnscache,比传统的bind好用,支持web维护,后话了。。。,有空也整理这块,^_^。
使用Postfix+SASL来完成SMTP的SMTP-AUTH功能
Postfix本身并无帐号认证机制,故使用系统SASLservice来做这块,工作原理是,当postfix发现有人要relay邮件时,会将帐号及密码信息传给SASL(saslauthddaemon),SASL会根据自己的验证方式,比如对/etc/passwd及/etc/shadow来决定是否可以relay邮件。
修改mynetworks为127.0.0.1可以relay邮件,所以此时当MUA尝试将邮件邮寄至另一台mailserver时,会出现rlayaccessdenied的错误提示
mail:~#postconf-e'mynetworks=127.0.0.1'
mail:~#postconfmynetworks
mynetworks=127.0.0.1
mail:~#rcpostfixrestart
Shuttingdownmailservice(Postfix)done
Startingmailservice(Postfix)done
修改/etc/postfix/main.cf
mail:~#vi/etc/postfix/main.cf
smtpd_sasl_auth_enable=yes
smtpd_sasl_security_options=noanonymous
broken_sasl_auth_clients=yes
smtpd_recipient_restrictions=permit_sasl_authenticated,
permit_mynetworks,reject_unauth_destination
(注意,在main.cf中,缩进是意味着上一行的延续,可以看成是同一行)
利用postconf方式如下:
postconf-e'smtpd_sasl_auth_enable=yes'
postconf-e'smtpd_sasl_security_options=noanonymous'
postconf-e'broken_sasl_auth_clients=yes'
postconf-e
'smtpd_recipient_restrictions=permit_sasl_authenticated,
permit_mynetworks,reject_unauth_destination'
上述参数的解释如下:
smtpd_sasl_auth_enable:开启mailclient启动sasl认证,默认此项是不开启的
smtpd_sasl_security_options:取消匿名登陆方式
broken_sasl_auth_clients:开启此项的目的是让不支持RFC2554的smtpclient也可以跟postfix做交互。
smtpd_recipient_restrictions:设定邮件中有关收件人部分的限制,(rcptto:<收件人e-mail>),应用规则是[第一条符合后,便不会往下继续检查]。
permit_sasl_authenticated:允许使用sasl认证方式的使用者relay邮件
permit_mynetworks:允许mynetworks中设置的用户relay邮件
reject_unauth_destination:阻止@xxx.xxx,不在my_destination中的地址,退回他们的邮件。
修改系统sasl的相关设置vi/etc/sysconfig/saslauthd
##Path:System/Security/SASL
##Type:list(getpwent,kerberos5,pam,rimap,shadow,ldap)
##Default:pam
##ServiceRestart:saslauthd
#
#Authenticationmechanismtousebysaslauthd.
#Seeman8saslauthdforavailablemechanisms.
#
SASLAUTHD_AUTHMECH=pam
看这里是否为pam,其实默认就是使用pam的,主要检查下
检查,启动saslauthdservice
#chkconfig--listsaslauthd
#rcsaslauthdstart
重新启动postfix
#rcpostfixrestart
部门邮件,邮件列表功能/etc/aliases,其语法如下:
mail帐号:真实帐号1,真实帐号2,真实帐号3
mail帐号::include:邮寄人名单
例如:
vi/etc/aliases
mis:ray,fly,edison
vi/etc/aliases
allusers::include:/etc/allusers
前者直接写明帐号,适合人员少的情况;后者使用了一个文件,适合大量人员的情况
重新生成aliases.db,执行
#newaliases
#ls-l/etc/aliases
-rw-r--r--1rootroot2579Jun162006aliases
-rw-r--r--1rootroot12288Dec2302:54aliases.db
同时,利用/etc/aliases文件,还能实现邮件的简单转发功能
#vi/etc/aliases
ray:ray,fly(这里邮寄给ray的信件会同时转发给ray和fly)
#newaliases
利用此文件有一个明显的缺点:只有root用户有操作权限,普通用户无法直接操作,提供如下方法,可以使普通用户也有权限。
以普通用户登陆后,创建~/.forward文件
\ray,fly
或者简化为
ray,fly
利用~/.forward还可以使用vacation命令来做假期邮件自动回复
在用户的家目录,编译.forward文件
ray@mailtest:~>vi.forward
\neo,"|/usr/bin/vacationneo"
编写内容文件vi~/.vacation.msg
Subject:ray1/10~1/22休假
7/10~7/20我正在休假中
有关你的Mail"$SUBJECT"
我回来,会尽快处理
初始化vacation库,使用如下命令
ray@mailtest:~>vacation-i
取消自动回复,只需要删除或重新命名.forward文件即可。
Postfix的转录机制(always_bcc)
Postfix可以设置把所有收到和寄出的邮件,都转发到某个帐号里,设定非常简单
mailtest:~#postconfalways_bcc
always_bcc=<-默认值为空
mail:~#postconf-e'always_bcc=ray@mailtest.tm'
此功能适合对信息安全要求较高的公司,或者满足保留公司邮件的需要,很多外国公司,按照他们的法律,所有的邮件都要保存7年,比如美国。通过本文的介绍,我想大家也逐渐熟悉了Suse Postfix配置,希望本文对你有所帮助。
【编辑推荐】