suse 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

*  mail server的DNS,默认使用/etc/resolv.conf中设置的dns服务器来做解析,所以,完全没有必要在mail server上再架设DNS server。当然,你有兴趣搞定,那是perfect。笔者尝试过powerdns+dnscache,比传统的bind好用,支持web维护,后话了。。。,有空也整理这块,^_^。


*  使用Postfix+SASL来完成SMTP的SMTP-AUTH功能
   Postfix本身并无帐号认证机制,故使用系统SASL service来做这块,工作原理是,当postfix发现有人要relay邮件时,会将帐号及密码信息传给SASL(saslauthd daemon),SASL会根据自己的验证方式,比如对/etc/passwd及/etc/shadow来决定是否可以relay邮件。

   × 修改mynetworks为127.0.0.1可以relay邮件,所以此时当MUA尝试将邮件邮寄至另一台mail server时,会出现rlay access denied的错误提示
   mail:~ # postconf -e 'mynetworks = 127.0.0.1'
   mail:~ # postconf mynetworks
   mynetworks = 127.0.0.1
   mail:~ # rcpostfix restart
   Shutting down mail service (Postfix)                       done
   Starting mail service (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:开启mail client启动sasl认证,默认此项是不开启的
     smtpd_sasl_security_options:取消匿名登陆方式
     broken_sasl_auth_clients:开启此项的目的是让不支持RFC2554的smtp client也可以跟postfix做交互。
     smtpd_recipient_restrictions:设定邮件中有关收件人部分的限制,(rcpt to:<收件人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
      #
      # Authentication mechanism to use by saslauthd.
      # See man 8 saslauthd for available mechanisms.
      #
      SASLAUTHD_AUTHMECH=pam
      看这里是否为pam,其实默认就是使用pam的,主要检查下

    × 检查,启动saslauthd service
      #chkconfig --list saslauthd
      #rcsaslauthd start

    × 重新启动postfix
      #rcpostfix restart

*  部门邮件,邮件列表功能/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-- 1 root root  2579 Jun 16  2006 aliases
   -rw-r--r-- 1 root root 12288 Dec 23 02:54 aliases.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/vacation neo"
 
   编写内容文件vi ~/.vacation.msg
   Subject: ray 1/10~1/22休假
   7/10~7/20我正在休假中
   有关你的Mail "$SUBJECT"
   我回来,会尽快处理
  
   初始化vacation库,使用如下命令
   ray@mailtest:~> vacation -i
 
   取消自动回复,只需要删除或重新命名.forward文件即可。

*  Postfix的转录机制(always_bcc)
   Postfix可以设置把所有收到和寄出的邮件,都转发到某个帐号里,设定非常简单
   mailtest:~ # postconf always_bcc
   always_bcc = <- 默认值为空
   mail:~ # postconf -e 'always_bcc = ray@mailtest.tm'
   此功能适合对信息安全要求较高的公司,或者满足保留公司邮件的需要,很多外国公司,按照他们的法律,所有的邮件都要保存7年,比如美国。

 

来自:http://blog.chinaunix.net/u2/62904/showart_1736668.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值