鸟哥的 Linux ADSL 私房菜


简易 Mail Server 架设 -- Postfix 设定
最近更新日期:2004/04/07
 
在介绍完了 sendmail 之后,您是否觉得~唉!怎么 sendmail.cf 这个设定档这么难搞定~还得藉由 m4 scripts 才能搞定!而且, sendmail 需要考虑到相当多的安全设定项目 ( Security ),否则很容易一不小心就被攻击了!那么有没有更简单、更安全的邮件系统啊!当然有啊!那就是 Postfix 这个咚咚!Postfix 的作者有鉴于 sendmail 是这样成功的一个 MTA ,但是偏偏有点小问题,所以该作者站在兼容的立场上面写出这个几乎可以完全取代 sendmail 的 MTA !此外, Postfix 还更加的安全呢,真是很不错的一个 mail server 的替代方案啊!
 
前言
  :本章学习之前你需要先知道的知识
  :为什么要有 Postfix 呢
套件安装
  :使用 RPM 安装完整的 Postfix + POP3 + SMTP + Procmail (Cyrus-SASL 1.5.xx 设定方式)
  :Mandrake 9.0
  :Red Hat 9
  :使用 Tarball 安装完整的 Postfix + POP3 + SMTP + Procmail (Cyrus-SASL 2.xx 设定方式)
主机的设定
  :Postfix 的结构
  :基础设定 (设定接受的主机名称)
  :重要观念:预设 Relay 与 收信 流程
  :启动 smtp 邮件认证功能
  :几个相关的档案说明
客户端的使用说明
关于邮件主机安全的设定
  :关于 Open Relay Data Base
  :关于 Procmail 用法
  :关于邮件过滤的规则设定
  :问题信件的送达
其它应用说明
参考资源
本章习题练习

前言:
在开始介绍 Postfix 这个服务器之前,得先告诉您的是,这个 Postfix 的用途是『邮件服务器』,那么我们在前一章『Sendmail 服务器』里面已经提过了 mail server 的相关原理与运作过程,这个 Postfix 与 sendmail 是类似的东西,那就是『MTA』啦,既然都是 MTA ,使用的协议也相同,同时,这个 Postfix 最早之前的用途也是想要用来『取代 sendmail 』。所以,为了节省笔墨,也为了未来进行修改的时候不要有太多的版本 ( 意思是这里 copy 一份 mail 原理,那里又有一份原稿~ ) ,因此上,在进行本章的学习之前,请『务必』前往『简易 Mail server -- sendmail』读一读 Mail server 的原理与相关的说明啊!
 

本章学习之前你需要先知道的知识
 
上面刚刚提到,学习本章你必须要知道 Mail Server 的相关知识才行,在这里,我们不再说明已经提过的咚咚,请自行再前往翻阅。由于架设某种服务器的第一步就是要了解该服务器的工作原理,因此,在架设 Postfix 之前,您至少要知道以下的几个咚咚:
  1. Mail Server 能否运作与 DNS ( MX 与 A recode )的相关性为何?
  2. 什么是 MTA, MUA, MDA 与 Mail box, Mailing list 等相关的术语,及其内容所代表的意义!
  3. 什么是 smtp, pop3 以及 imap 协议,他们的用途分别是什么?
  4. 什么是 Relay 与 Open Relay ?
  5. 什么是 SMTP 邮件认证?
  6. 什么是邮件的别名与转递( aliases 与 forward )?
  7. 什么是 Procmail 与什么是 ORDB 呢?
如果您不晓得上面问题的答案,请不要『白目』的继续往下看 ^_^,先前往『简易的 sendmail 服务器』瞧一瞧相关的原理之后,再来这里吧!慢点学习不打紧,学的不精....可能会有害啊! @_@
  

为什么要有 Postfix 呢?
 
这是个很有趣的问题:『为什么要有 Postfix 呢?有了 sendmail 不就可以了吗?!』说到这个就要谈到 postfix 的由来了!
 
Postfix 是由 Wietse Zweitze Venema 先生(http://www.porcupine.org/wietse/)所发展的。早期的 mail server 都是使用 sendmail 架设的,还真的是『仅此一家,绝无分号!』 ^_^ !不过,Venema 博士觉得 sendmail 虽然很好用,但是毕竟不够安全,尤其效能上面并不十分的理想,最大的困扰是....他的设定档 sendmail.cf 真的是太难懂了!对于网管人员来说,要设定好 sendmail.cf 这个档案,真不是人作的工作~
 
为了改善这些问题, Venema 博士就在 1998 年利用他老大在 IBM 公司第一个休假年进行一个计划:『设计一个可以取代 sendmail 的软件套件,可以提供网站管理员一个更快速、更安全、而且"完全兼容"于 sendmail 的 mail server 软件!』这个计划还真的成功了!而且也成功的使用在 IBM 内部,可以说是完全取代了 sendmail 这个邮件服务器!在这个计划成功之后, Venema 博士也在 1998 年首次释出这个自行发展的邮件服务器,并定名为 VMailer。不过, IBM 的律师却发现一件事,那就是 VMailer 这个名字与其它已注册的商标很类似,这样可能会引起一些注册上面的困扰。为了避免这个问题,所以 Venema 博士就将名称改为 Postfix !这个 Postfix 有『在什么什么之后修正』的意思。鸟哥个人认为, Venema 先生最早的构想并不是想要『创造一个全新的 Mail server 软件,而是想要制造一个可以完全兼容于 sendmail 的软件』,所以,Venema 先生认为他自行发展的软件应该是『改良 sendmail 的缺失』,所以才称为 Postfix 吧!取其意为:『在 sendmail 之后的改良的邮件服务器软件!』
 
所以啦, Postfix 设计的理念上面,主要是针对『想要完全兼容于 sendmail』所设计出来的一款『内在部分完全新颖』的一个邮件服务器软件。就是由于这个理念,因此,Postfix 改善了 sendmail 安全性上面的问题,改良了 mail server 的工作效率,更由于其设定档完全为 ASCII 码,且设定内容都是『人类看的懂得语言!』因此,你可以轻易的由 sendmail 改良到 Postfix 上面!这也是当初 Venema 博士的最初构想啊!就是基于这个构想,所以, Postfix 在外部设定档案的支持度,与 sendmail 几乎没有两样,同样的支持 aliases 这个档案,同样的支持 ~/.forward 这个档案,也同样的支持 SASL 的 SMTP 邮件认证功能等等!所以,呵呵!赶紧来学一学怎样架设 Postfix 这个相当出色的邮件服务器吧! ^_^

套件安装
跟之前一样的,我们需要的 mail server 功能有哪些呢? 为达成上述的功能,所以你至少需要底下的几个套件: 如果您是使用 Mandrake 后期版本的话,那么恭喜您,由于 Mandrake 预设就是使用 Postfix 做为邮件服务器,并且在安装的时候就已经将 Postfix 安装到你的系统当中了。至于 Red Hat 9 同样的也提供了 Postfix 喔!而如果您是使用非 postfix 为邮件服务器的 Linux distribution ,呵呵!仔细的查看后面介绍的 Tarball 安装的方式吧!
 

使用 RPM 安装完整的 Postfix + POP3 + SMTP + Procmail
 
底下我们分 Mandrake 9.0 与 Red Hat 9 这两个主要 Linux distribution 来介绍 Postfix + Cyrus-SASL 的方法喔!
 
Makdrake 9.x 版本
如果你是使用 Mandrake 之类的 Linux distribution 的话,由于他预设是以 Postfix 这个优良的邮件服务器系统,所以您可以不费吹灰之力的,就将 Postfix 以 RPM 安装完毕啰!基本上,如果是 Mandrake 的话,你需要安装的套件大致上有: 你至少要安装的套件就有上面这几个,同时,请拿出您的原版光盘将上面的套件全部安装吧!安装的方法我们在『鸟哥的 Linux 私房菜 -- 基础学习篇』介绍过的 RPM 与 Tarball 安装方法里面提过多次了,请自行参考喔!安装完毕之后,你的主机就已经具有 Postfix 这个系统啦!不过,由于我们还要提供 SMTP 以及其它相关的功能,所以这里我们必需要确认一下各个套件是否都完全的安装了呢?底下我们就一个一个的来设定吧!(注:请特别留意 Cyrus-sasl 的版本,因为不同的版本他的函式库所在目录与设定文件都不相同!因此,在本篇文章中,您会发现我使用 Tarball 安装的 2.xx 版本与使用 RPM 安装的 1.5.xx 版本设定档的内容不相同,不要怀疑,确实是如此的喔! )
 
安装 cyrus-sasl
1. 安装
# 安装的方法很简单,就是使用 RPM 即可!不过,请先确认是否已经安装!
[root@test root]# rpm -qa | grep sasl
libsasl7-1.5.27-5mdk
cyrus-sasl-1.5.27-5mdk
libsasl7-devel-1.5.27-5mdk
libsasl7-plug-plain-1.5.27-5mdk
libsasl7-plug-login-1.5.27-5mdk

# 如果尚未安装该套件,请拿出你的光盘片, mount 光盘,然后找寻该档案,
# 直接安装他吧!不过要注意的是,上面的档案都要安装喔!因为我们使用的
# 是最基本的 plain 与 login 这两个机制,所以至少我们要安装上面五个咚咚!
[root@test root]# rpm -ivh cyrus-sasl-1.5.27-5mdk.i586.rpm
# 如果有发生属性相依的问题,请自行再将需要的档案自光盘当中找出,
# 然后加以安装吧!

2. 设定与启动
# 由于 Cyrus-sasl 在 Mandrake 当中是 1.5.27 版本,所以他能支持的项目有:
shadow : 使用 /etc/shadow 做为认证码;
pam  : 使用 pam 模块做为认证,这个需要在 /etc/pam.d 这个目录下新增
     一个名为 smtp 的档案,并设定档案内容才行!
sasldb : 使用 SASL 的认证函式库,使用这个功能时,你必需要额外的
     指定 1.函式库的名称; 2.使用 saslpasswd 程序增加使用者!
     鸟哥个人认为这个功能不太好用,因为每新增一个使用者需要主动的
     帮使用者新增账号、密码到认证函式库中,不太方便!
     不过如果您还使用其它的服务器如 LDAP, MySQL 等等软件时,
     则这个功能可就大大的有帮助啦!因为他可以分享账号与密码吶!
pwcheck: 这个功能就不错啦! pwcheck 是一个服务(daemon),必需要在
     启动 postfix 之前就启动啦,因为 sasl 的认证就靠这个 daemon,
     基本上,他可以经由读取 /etc/shadow 的数据来提供 client 端
     认证的功能!目前我们 Mandrake 9.0 预设使用的是这个 daemon!
# 给他设定开机时启动 pwcheck 的功能吧!
[root@test root]# vi /etc/rc.d/rc.local
# 在这个档案当中最底下新增一行:
/usr/sbin/pwcheck
# 并且立刻执行这个 daemon 喔:
[root@test root]# /usr/sbin/pwcheck
[root@test root]# ps -aux | grep pwcheck
root   12602  0.0  0.5  1460  348 ?    S  02:59   0:00 /usr/sbin/pwcheck
# 看到没!要出现这个咚咚才算是有启动 pwcheck 喔!

# 在 Sendmail 当中,我们必需建立一个名为 Sendmail.conf 的档案,来告诉
# sasl 我们所需要的认证模式,那么在 postfix 当中也一样,我们必需要建立
# 一个文件名称为smtpd.conf来告诉 sasl ,喝!我 postfix 要的认证方式为何!
# 所以你需要这样做:
[root@test root]# cd /usr/lib/sasl
[root@test sasl]# echo 'pwcheck_method: pwcheck'  >  smtpd.conf

# 上面这样做完之后,系统就知道了:
1. postfix 要用 SMTP 认证时会去读取 /usr/lib/sasl/smtpd.conf 并且知道
  是以 pwcheck 这支程序进行身份认证的动作;
2. 而 pwcheck 这支程序会主动去读取 /etc/shadow ,里面的密码做认证
# 到此为止,就已经设定好了 cyrus sasl 的部分啦!

 
安装 postfix
1. 安装
# 安装的方法很简单,就是使用 RPM 即可!不过,请先确认是否已经安装!
[root@test root]# rpm -qa | grep postfix
postfix-1.1.11-4mdk

# 如果尚未安装该套件,请拿出你的光盘片, mount 光盘,然后找寻该档案,
# 直接安装他吧!
[root@test root]# rpm -ivh postfix-1.1.11-4mdk.i586.rpm

# 这样就安装完毕啦!主机设定的部分请参考下一节喔!

 
安装 procmail
1. 安装
[root@test root]# rpm -qa | grep procmail
procmail-3.22-3mdk

2. 设定:
# 在设定方面,这主要与 procmail 有关而已,您可以下载 procmailrc 
# 并放置到 /etc/ 底下即可详细的数据请参考上一章简易 sendmail 之说明

 
安装 imap
1. 安装
[root@test root]# rpm -qa | grep imap
imap-2001a-9mdk
imap-devel-2001a-9mdk

2. 设定:
# 直接设定成为开机启动即可:
[root@test root]# chkconfig --add ipop3
[root@test root]# /etc/rc.d/init.d/xinetd restart
# 这样就已经可以收信件啦!

 
安装的地方当中,重点在于 Cyrus-SASL 的安装啦!由于我们需要有 SASL 的支持,所以必需要安装这个咚咚!并且也需要设定 smtpd.conf 这个档案!这样就已经差不多 OK 啦!接下来请继续参考主机设定的地方噜!
 
Red Hat 9 版本:
什么?!Red Hat 9 也同时提供 Postfix 啊?!没错的啦!呵呵!很高兴吧!所以说, Red Hat 9 不但提供了 sendmail 给我们使用,还额外提供了 Postfix 让我们可以随意的转换邮件服务器软件呢!不过,在 Red Hat 9 的 Cyrus-sasl 已经是 2.xx 版本了,而且还主动的提供兼容于 1.5.xx 版本的函式库呢!真是相当的棒啊!但是因为 Red Hat 9 提供的 Postfix 还是使用 1.xx 版,因此我们在 Red Hat 9 预设的 Postfix 邮件服务器中,还是使用 Cyrus SASL 1.5.xx 的函式库喔!所以也就无法使用 saslauthd 这个机制了!并且, Red Hat 9 并没有提供 pwcheck 这个程序,所以在 Red Hat 9 底下的 Cyrus SASL 认证机制就需要使用 sasldb 了!至于安装的方法最简单的方式就是以我们在 网络升级套件 那一章节提到的 APT 来进行安装即可!
 
1. 安装:
[root@test root]# apt-get install postfix
[root@test root]# apt-get install cyrus-sasl
[root@test root]# apt-get install procmail
 
很简单吧!这样就搞定了 Red Hat 9 的 Postfix 啰!(注意, Mandrake 与 Red Hat 不同版本所使用的 Cyrus SASL 机制并不相同喔!在 Mandrake 当中预设是 pwcheck 而在 Red Hat 则预设使用 sasldb 这个验证机制!并且,由于 Red Hat 9 在编译 postfix 的时候使用的是 SASL version 1 ,所以无法使用 saslauthd 这个好用的机制,鸟哥认为,您最好使用 Tarball 来安装您的 Postfix 在您的 Red Hat 9 上面喔!)
 

使用 Tarball 安装完整的 Postfix + POP3 + SMTP + Procmail (适用任何版本的 Linux 喔!)
 
以 Tarball 安装 Postfix 也不困难,比起 sendmail 来说,要简单的很多喔!我们这里选择的主要套件有: 至于 procmail 与 imap 两个套件都使用 Linux distribution 提供的 RPM 版本就好了,不需要额外的改装啊!那么底下就来谈一谈怎么安装吧!(注: Cyrus SASL 与 Cyrus SASL2 这两个不同版本的 SASL 函式库放置的目录并不相同,所以你可以分别安装 cyrus version 1 与 version 2 喔!在鸟哥的案例当中,还不会发生问题就是了!另外,如果您是 Red Hat 9 的使用者,由于 Red Hat 9 已经提供了 Cyrus SASL version 2 了,所以您可以直接略过 Cyrus SASL 的安装部分,直接到 Postfix 2.xx 的安装呢!)
 
安装 Cyrus SASL 2.xx 版本!
1. 首先将数据解压缩(假设您将我们网站的档案捉到 /root 底下了!)
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/cyrus-sasl-2.1.12.tar.gz
.....(略).....最后建立一个 cyrus-sasl-2.1.12 的目录

2. 再来就是设定你的 cyrus SASL 的参数以及编译啰!
[root@test src]# cd cyrus-sasl-2.1.12
[root@test cyrus-sasl-2.1.12]# ./configure   \
> --prefix=/usr/local/cyrus-sasl2 --enable-login --enable-plain \
> --enable-pwcheck --with-saslauthd=/var/run \
# 注意上面的语法!!那个 \ 是跳脱字符喔!后面直接 Enter !
# 不要接任何空白或者是 tab 按键!若有问题,请到 Shell 看看!
# 至于那个 pwcheck 的项目,就是要用来做为密码确认的一个咚咚啰!

[root@test cyrus-sasl-2.1.12]# make clean && make
[root@test cyrus-sasl-2.1.12]# make install
# 上面三个步骤会花去一些时间,请耐心等待~
# 而由于我们刚刚设定了 --prefix=/usr/local/cyrus-sasl2 这个参数,
# 所以, make install 之后,我们有用的函式库会在 
# /usr/local/cyrus-sasl2/lib/sasl2 这个路径当中,但是, cyrus 程序
# 会主动去找 /usr/lib/sasl2 这个目录!所以,我们必需要做连结档!
# 才可以让未来我们的 postfix 可以直接找的到我们所要的函式库喔!

[root@test cyrus-sasl-2.1.12]# cd /usr/lib
[root@test lib]# ln -s /usr/local/cyrus-sasl2/lib/* .
# 这样就建立起连结档啰!很简单吧! ^_^不过要注意喔,
# 上面这一行最后面那个小数点『.』不要忘记加了!

3. 准备建立 Postfix 与 cyrus SASL 使用的简易设定档:
[root@test lib]# cd /usr/lib/sasl2
[root@test sasl2]# echo 'pwcheck_method: saslauthd' > smtpd.conf 
[root@test sasl2]# echo 'mech_list:plain login'  >>  smtpd.conf 
# 注意了!一般来说, Postfix 会使用 SASL 这个函式库里面相关的设定档,
# /usr/lib/sasl2/smtpd.conf 这个档案的设定就是 Postfix 的预设使用 SASL 的
# 参数档案,与 1.5.xx 版本不太相同的地方是, 2.xx 版本使用不同的机制:
auxprop :使用 sasldb2 这个共享数据库,同样需要使用共享密码档案喔!
      所以一般来说,单纯的 Postfix 比较少使用这种机制;
saslauthd:使用 saslauthd 这个 daemon 进行认证的工作,所以几乎
      不需要其它的设定值哪,指定 saslauthd 就好啦! ^_^
pwcheck :使用与 1.5 版相似的认证 daemon ,不过在 2.xx 版本里面这个模式
      支持度比较没有这么好的啦,所以请爱用 saslauthd 啰!
# 我们使用 SASL 预设的 saslauthd 这支程序做为密码认证的 daemon。
# 至于 mech_list:plain login 是列出支持的认证机制的意思,我们使用的
# 是极为简单的 login 与 plain 两种机制而已!

4. 建立一些需要的参数:
[root@test sasl2]# vi /etc/man.config
# 新增底下这一行之后,未来我们就可以透过 man 这个工具来查询 sasl 
# 相关的指令的用法了!而不需要修改任何咚咚!不过要注意的是,
# 这个档案在每个 Linux distributions 当中不见得相同,例如 Open Linux 
# 檔名是 /etc/man.conf 呢!
MANPATH /usr/local/cyrus-sasl2/man

5. 检验 saslauthd 这支程序是否可行!
# 在 cyrus-sasl 的原始码里面提供了一支小程序用来判断 saslauthd 的认证机制
# 是否成功的启动了,这个小程序就是 testsaslauthd 啰!在刚刚原始码目录下,
# 所以你可以这样做:
[root@test sasl2]# /usr/local/cyrus-sasl2/sbin/saslauthd -a shadow
# 执行之后, saslauthd 的 PID 会被纪录到 /var/run/mux.pid 这个档案!
[root@test sasl2]# cd /usr/local/src/cyrus-sasl-2.1.12/saslauthd/
[root@test saslauthd]# make testsaslauthd
[root@test saslauthd]# ./testsaslauthd -u userID -p 'yours.passwd'
0: OK "Success."
# 若显示 OK 的话!那么就是成功啦!很好!我喜欢~

6. 设定开机时启动
[root @test saslauthd]# vi /etc/rc.d/rc.local
# 加入这一行:
/usr/local/cyrus-sasl2/sbin/saslauthd -a shadow

 
安装 Postfix 2.xx 版本!
0. 先确认有没有这个档案存在!因为我们的 Postfix 会使用到很多数据库啊!
[root@test root]# locate pcre.h | grep include
/usr/include/pcre.h
# 这个档案也有可能存在于 /usr/include/pcre/pcre.h 里面!不要担心,存在就好了
# 如果没有存在的话,例如 Mandrake 9.0 预设状态可能并不会主动安装这个套件,
# 请自行拿出原版光盘,安装 MDK 的 libpcre0xxxx 档案,至于 redhat 等
# 其它版本,请自行安装 pcre 相关的套件吧!在 Red Hat 9 则是需要
# pcre-devel 这个套件喔! ( apt-get install pcre-devel)

1. 首先将数据解压缩(假设您将我们网站的档案捉到 /root 底下了!)
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/postfix-2.0.4.tar.gz
.....(略).....最后建立一个 postfix-2.0.4 的目录

2. 清除规则并且建立新的使用 SMTP 的规则给 postfix
[root@test src]# cd /usr/local/src/postfix-2.0.4
[root@test postfix-2.0.4]# make tidy  # 清除规则
[root@test postfix-2.0.4]# make makefiles CCARGS="-DUSE_SASL_AUTH \
>  -I/usr/local/cyrus-sasl2/include/sasl/"  \
>  AUXLIBS="-L/usr/local/cyrus-sasl2/lib -lsasl2"
# 上面的动作在建立 Makefile 啰!其中那个 -CCARGS 后面接的 -DUSE_SASL_AUHT
# -I/usr/local/cyrus-sasl2/include/sasl 其中 -I 后面的路径就是 SASL2 的
# 函式库所在的目录喔!请依照您安装的 sasl2 目录所在而定!
[root@test postfix-2.0.4]# make
# 就是开始编译啦!过程有点久喔!如果有出现任何 Error 时,
# 请将 error 仔细的查看一下吧!通常最大的原因都是一些
# include 档案没有安装,也就是某些重要的套件没有安装之故,
# 例如 pcre.h 这个档案就是一个例子啰!
# 解决的方法就是将该缺乏的套件安装进去系统啦!
# 如果是 Red Hat 9 的话,可以这样下达指令:
# make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl" \
# AUXLIBS="-L/usr/lib/sasl2 -lsasl2"
# 因为 Red Hat 9 的 SASL2 路径在 /usr/include/sasl ,这里要特别的强调,
# 否则由于 Red Hed 9 同时提供 Cyrus SASL 1.5.x 以及 2.x.x 的版本,
# 可能会造成程序的误判,那么很可能会出现下列的错误喔:
# fatal: SASL per-connection security setup 
# 上面的错误讯息出现在 /var/log/maillog 中!

3. 安装前准备工作:
# 如果您的系统是由 sendmail 要改换到 Postfix 的话,你不需要移除 sendmail ,
# 不过却需要进行一些小手术喔!
[root@test postfix-2.0.4]# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
[root@test postfix-2.0.4]# mv /usr/bin/newaliases /usr/bin/newaliases.OFF
[root@test postfix-2.0.4]# mv /usr/bin/mailq /usr/bin/mailq.OFF
[root@test postfix-2.0.4]# chmod 755 /usr/sbin/sendmail.OFF \
/usr/bin/newaliases.OFF /usr/bin/mailq.OFF

# 此外,还需要建立一个名为 postdrop 的群组与 postfix 的使用者喔!
[root@test postfix-2.0.4]# groupadd -r postdrop
[root@test postfix-2.0.4]# useradd -r -s /bin/false postfix
# 建立一个系统数据账号吶!
[root@test postfix-2.0.4]# echo 'postfix:  root' >> /etc/aliases
# 请注意,如果您之前安装过 sendmail 的话,那么不同版本的 sendmail 他的
aliases 放置的目录并不相同,所以上面这行指令请依您的主机来设定!

4. 开始安装 Postfix 到 /etc/postfix 这个目录下:
[root@test postfix-2.0.4]# make install
# 底下会出现一大堆的问题集,不管如何,几乎按下 enter 就对啦!
# 除了底下这两个问题(最后两个)可以选择将 readme 档案存下来喔!
Please specify the destination directory for the Postfix sample
configuration files.
sample_directory: [/etc/postfix] /etc/postfix/sample

Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.
readme_directory: [no] /etc/postfix/readme_files

# 这样就安装成功啦!接下来请开始查阅 主机的设定 那一节啰!

 

主机的设定
客户端的使用说明
所有在 sendmail 当中需要注意的与可以使用的 Client 端的功能,在 postfix 当中都同样的可以使用喔!所以,这部份请回到『sendmail 服务器』那一章去瞧一瞧怎么使用 client 来进行 Mail server 的种种工作吶!其中,需要特别强调的有几个小细节:

关于邮件主机安全的设定
其它应用说明:
在其它应用方面,基本上,与 sendmail 相似的,我们都需要:
  1. 进行备份;
  2. 进行磁盘配额限制(quota);
  3. 进行登录文件的查询与记录
这些动作与 sendmail 都很类似啦!所以您可以回上一章去参考一下喔!那么万一是无法使用 postfix 来寄信呢?你可以这样试看看:
  1. 回归到最原始的状态,也就是不开放任何 SMTP, Open Relay, procmail 等等,以最原始的 main.cf 档案进行 postfix 的运作,然后检查一下重要的 myhostname, mydestination 以及 mynetwork 的设定,来看看 postfix 是否工作的很顺畅,然后再来一个一个的启用其它相关的控制喔!
  2. 万一无法进行 SMTP 时,请确认您的 cyrus SASL 函式库是第几版的,然后在依照本文上面的设定来设定看看,应该不成问题吧!
  3. 还是无法解决您的问题时,请检查一下您的 /var/log/maillog 这个登录档,问题的解决都在里面啊!!!
另外,我们的网友 yangsman 提供了一支不错的 script 用来启动 pwcheck 之用,有兴趣的朋友也可以参考喔! script 内容如下:
 
[root@test root]# vi /etc/rc.d/init.d/pwcheck
#!/bin/sh
#
# Written By Yangsman 2003/05/5 
#
#
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} =  "no" ] && exit 0

[ -f /usr/sbin/pwcheck ] || exit 0

# See how we were called.
case  "$1" in
 start)
    # Start daemons.
    if [ ! -f /var/lock/subsys/pwcheck ]; then
    gprintf  "Starting pwcheck:  "
    /usr/sbin/pwcheck 2>/dev/null
    echo pwcheck
    touch /var/lock/subsys/pwcheck
    else
    $0 status
    fi
    ;;
 stop)
    # Stop daemons.
    if [ -f /var/lock/subsys/pwcheck ]; then
    gprintf  "Shutting down pwcheck:  "
    kill `ps -aux|grep -v ps |grep  "/usr/sbin/pwcheck"| \
        gawk '{print $2}'` 2>/dev/null
    echo pwcheck
    rm -f /var/lock/subsys/pwcheck
    else
    $0 status
    fi
    ;;
 restart)
    $0 stop
    $0 start
    ;;
 status)
       if [ -f /var/lock/subsys/pwcheck ]; then
         gprintf  "pwcheck (pid \c"
         gprintf  "`ps -aux|grep -v ps |grep  "/usr/sbin/pwcheck"| \
            gawk '{print $2}' 2>/dev/null`\c"
         gprintf  ")is runing ...\n"
    else
         gprintf  "pwcheck is't stopped \n"
    fi
    ;;
 *)
    gprintf  "Usage: %s {start|stop|restart|status}\n"  "$0"
    exit 1
esac

exit 0

 

参考资源
本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
简易 Mail Server 架设 -- Postfix 设定

2003/03/07:第一次完成
2003/04/19:加入 Posfix 的邮件过滤规则订定
2003/09/12:重新修订一些安装方法!
2004/01/26:订正 Tarball 安装 Postfix + SASL 的方法!如果您的 Postfix 安装完后,却无法执行 SASL 的认证功能,那么大部分的原因应该是出现在 Tarball 安装时没有确定好 SASL 的函式库的原因!如果您的 /var/log/maillog 出现这样的字眼:『fatal: SASL per-connection security setup』那就是这个问题啦!这个时候,请重新编译您的 postfix 即可!如何编译?在 make 的时候,请参考 点这里
2004/04/07:修订了新版的 Postfix 与 Open Relay 的搭配语法,请 点这里 参考新的信息!同时也修改了显示的格式,如同首页的说明喔!
2004/06/22:如果您在使用 postfix + Cyrus-SASL 2.xx 版本时, 却怎么也无法进行邮件认证成功时, 建议您将三个套件移除看看. ( postfix + fetchmail + mutt ) 鸟哥最近在使用 Fedora Core I 同样发生无法进行成功的问题, 后来将上述三个套件移除, 然后重新安装 postfix (不安装 fetchmail/mutt) 怪了, 竟然就认证成功了.
2003/03/07以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.