rss· 投稿· 设为首页· 加入收藏· 繁體版

用postfix配置简单邮件服务器

1. 用以下命令查看系统是否安装了sendmail:
[root@mail /root]# rpm Cqa |grep sendmail
sendmail-8.11.0-8
2. 卸载sendmail:
[root@mail /root]# rpm -e sendmail Cnodeps
3. 用以下命令杀死运行中的sendmail进程:
[root@mail /root]# killall sendmail
如果系统提示:
sendmail: no process killed
则说明当前系统中没有sendmail进程。
4. 安装postfix:
[root@mail /root]# rpm -ivh postfix-20010228release-2.i386.rpm
若已经安装,则此步可以省略。(注:安装时最好用rpm包,会自动创建postfix用户和postfix组)
5. 安装imap
rpm Civh /mnt/cdrom/RedHat/RPMS/ imap-4.7c2-12.rpm
imap使pop3有效,即打开110端口。(注:安装时最好用rpm包)
若已经安装,则此步可以省略。
6. 检查系统中是否安装了cyrus-sasl
执行以下命令查看系统中是否安装了cyrus-sasl:
rpm Cqa |grep cyurs
如果您看到以下提示,则说明已经安装了cyrus-sasl
[root@test bye2000]# rpm -qa |grep sasl
cyrus-sasl-devel-1.5.24-17
cyrus-sasl-1.5.24-17
否则,请用rpm Civh 命令先安装所需sasl-cyrus包。
7.修改postfix用户
同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程序和可用
的用户宿主目录。
编辑/etc/passwd文件中的相关条目如下所示:
postfix:x:89:89::/no/where:/no/shell [编辑后,只修改蓝色部分就可以了]
即:修改用户的Home directory和Shell  参照 /etc/passwd文件8.编辑postfix的主要配置文件/etc/postfix/main.cf,根据需求只需修改以下几个参数:
1)mydomain
指明你的域名,在这里我们指定:
mydomain = xx.com
2)myorigin
myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com,则该参数指定@后面的域名。在这里我们指定:
myorigin = $mydomain
3)inet_interfaces
inet_interfaces = all     监听所有端口
4)mydestination
mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix
系统要接收什么样的邮件。通常与myorigin一样:
mydestination = $mydomain
5)mynetworks_style
设置网络类型,我们指定:
mynetworks_style = subnet
6)ynetworks
定义可以使用的此smtp服务器发信的客户ip地址,因为公司的ip范围已知,所以我们
指定:
mynetworks = 192.168.1.0/24
注:此项可根据情况而定,主要是指定ip范围,假如公司的ip划分是按照网段来的,例如:10.10.1.0~10.10.1.9,10.10.3.0~10.10.3.9等等更细。根据需要,该项可以不设置。
7)SMTP的配置
为了告诉postfix采用sasl来进行SMTP的用户认证,我们必须在/etc/postfix/main.cf文件的最后添加以下几行:
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
说明如下:
smtpd_sasl_auth_enable:告诉SMTP客户,该SMTP服务器需要进行用户认证。smtpd_recipient_restrictions = permit_sasl_authenticated
permit_auth_destination reject
仅仅中继通过SMTP认证的客户端邮件,以及接收本postfix为最后一站的邮件。
broken_sasl_auth_clients = yes
有一些Microsoft 的SMTP客户端,比如Outlook Express 4.X采用的是非标准的SMTP认证协议,将该选项设置为yes可以解决这类不兼容问题。
smtpd_sasl_security_options = noanonymous
控制本地SMTP认证所采用的机制,这里是允许任何非匿名认证方法。
9.配置SASL
进入/usr/lib/sasl/目录,用touch新建这样一个文件:
[root@test sasl]# touch smtpd.conf
在该文件中加入以下内容:
[root@test sasl]# more smtpd.conf
pwcheck_method:pam
也就是指定通过PAM来进行用户认证。
10.配置PAM
进入/etc/pam.d/目录,用touch新建这样一个文件:
[root@test pam.d]# touch smtp
在该文件中加入如下内容:
[root@test pam.d]# more smtp
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
也即和/etc/pam.d/pop文件的内容是一致的。
11.修改/etc/shadow文件权限
因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件
权限是设置为只有root用户可以读写,而我们的postfix是运行在postfix用户权限之下,所以我们要合理的设置/etc/shadow文件权限,以便让pam可以读取其内容。
执行以下命令,让root组也可以读取shadow:
[root@test /etc]# chmod 640 /etc/shadow
然后再将postfix用户加入root组,采用以下命令:
[root@test /etc]# usermod -G root postfix12.编辑postfix的主要配置文件/etc/postfix/master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
这里开始
#smtps   inet n - n - - smtpd
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd
#  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
这里结束
#628      inet  n       -       n       -       -       qmqpd
把我标的注释部分去掉即可。
13.配置pop3
RedHat7.0已经使用xinetd代替了以前的inetd,为了使pop3服务启动,我们编辑
/etc/xinetd.d/ipop3文件,将其中的disable = yes改为disable = no 以便启动pop3
服务。
为了使改动生效,执行以下命令:
/etc/rc.d/init.d/xinetd reload
14.启动postfix
执行以下命令启动postfix:
/etc/rc.d/init.d/postfix start 
这样,一个支持SMTP认证的postfix邮件服务器就配好了。附:postfix笔记*  Postfix 默认值
Postfix 采用默认值启动时有2个重要特性:
1.只在127.0.0.1的port 25上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
此为mail server的主机名,如果安装时有设置或者使用YaST修改过主机名,此选项默认会被设置,当然, 检查下最好了。
例如:myhostname = mailtest.tm
× mydomain
此为设置域名,在main.cf中没有这个设定值,其默认值就是你设置主机名时候的域名名称。
例如:mydomain = mailtest.tm
mail:# postconf mydomain
mydomain = mailtest.tm
× inet_interface(解除只在127.0.0.1的port25上监听的限制)
默认值为127.0.0.1,会造成外部MUA,MTA无法跟postfix交互,建议更改为all。也可以使用postconf指令来修改,如下:
mail:~ # postconf inet_interfaces
inet_interfaces = 127.0.0.1 ::1 <- 127.0.0.1
mail:~ # postconf -e 'inet_interfaces = all'<- 利用postconf指令修改
mail:~ # postconf inet_interfaces
inet_interfaces = all
× mynetworks_style设定允许relay邮件的具体方式,默认值为:subnet,主要有以下3种方式:
class:会根据服务器设置的IP地址属于A/B/C中的哪一类地址,来决定允许relay的服务器
例如mail server地址为220.11.35.2,则允许所有220.x.x.x的IP都可以利用你的mail server来做邮件转发relay,这个是非常危险的,你的mail server非常容易成为垃圾邮件的载体,强烈建议,不使用class方式
subnet:根据mail server的IP及netmask计算,只允许同一个网段的主机利用你的mail server来relay邮件。
host:如设定为host,则只允许localhost可以relay邮件
× mynetworks (允许IP/netmask及本机可以realy邮件)
指定可以使用此mail server来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 --list qpopper
#chkconfig qpopper on
#rcxinetd restart
*  使用Postfix+SASL来完成SMTP的SMTP-AUTH功能
Postfix本身并无帐号认证机制,
顶一下
(0)
踩一下
(0)