详解Suse Postfix配置解法

系统 Linux
随着社会的进步,科技的发展,操作系统越来越受到广大用户的关注,而Suse也越来越受到重视。你是否了解怎样完成Suse Postfix配置呢?今天我们就讲讲Suse Postfix配置学习问题。

随着社会的进步,科技的发展,操作系统越来越受到广大用户的关注,而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配置,希望本文对你有所帮助。

【编辑推荐】

  1. Open Suse Linux平台迁移好与坏
  2. 为你详解:Suse模块的知识
  3. 完美安装Suse,体验Sobe
  4. Suse下无线网卡DWL与G122驱动模块
  5. 不要犹豫:Suse Linux Enterprise Server 10
责任编辑:小霞 来源: chinaitlab
相关推荐

2011-01-19 09:55:27

postfix

2009-12-03 18:46:06

Suse ftp配置

2011-02-21 10:13:38

Postfix

2011-01-19 09:16:48

Postfix配置

2011-02-21 13:08:37

postfix配置

2010-06-02 17:36:31

postfix概述

2011-02-21 08:50:50

2011-01-19 14:00:21

2011-02-21 11:14:47

Postfix配置

2010-06-07 11:22:28

2009-11-26 15:41:02

SUSE LINUX系

2009-12-03 14:35:09

DHCP服务器配置

2009-12-03 14:42:43

配置cvs服务器

2009-11-27 10:21:51

Suse10支持ntf

2009-11-26 08:52:04

XManager连接O

2009-11-27 16:39:55

Suse YaST

2010-09-29 14:41:42

Suse DHCP配置

2010-06-09 18:17:20

Postfix邮件

2010-06-02 18:00:05

Postfix邮件

2009-12-01 16:16:41

Open Suse
点赞
收藏

51CTO技术栈公众号