Postfix
[root@localhost ~]# sl //安装依赖软件
mysql-5.0.56.tar.gz httpd-2.2.9.tar.gz php-5.2.6.tar.bz2 phpMyAdmin-2.11.9.5-all-languages.tar.gz //MySQL的管理软件 Apache编译安装 [root@localhost ~]# tar zxvf httpd-2.2.9.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/httpd-2.2.9/ [root@localhost httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs [root@localhost httpd-2.2.9]# make &&make install [root@localhost httpd-2.2.9]# cd [root@localhost ~]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd [root@localhost ~]# service httpd start [root@localhost ~]# chkconfig --add httpd httpd 服务不支持 chkconfig [root@localhost ~]# vim /etc/init.d/httpd //在配置文件的第二行添加 #!/bin/sh #chkconfig: 35 85 15 #description: New HTTP Server Daemon [root@localhost ~]# chkconfig --add httpd [root@localhost ~]# chkconfig --list httpd httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭MySQL编译安装
[root@localhost ~]# useradd -u 400 -M -s /sbin/nologin mysql [root@localhost ~]# tar zxvf mysql-5.0.56.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/mysql-5.0.56/ [root@localhost mysql-5.0.56]# ./configure --prefix=/usr/local/mysql [root@localhost mysql-5.0.56]# make &&make install [root@localhost mysql-5.0.56]# cd [root@localhost ~]# cp /usr/src/mysql-5.0.56/support-files/my-medium.cnf /etc/my.cnf //建立配置文件 [root@localhost ~]# /usr/local/mysql/bin/mysql_install_db --user=mysql //初始化数据库 [root@localhost ~]# chown -R root.mysql /usr/local/mysql/ [root@localhost ~]# chown -R mysql /usr/local/mysql/var/ [root@localhost ~]# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf //调整lib库路径 [root@localhost ~]# ldconfig [root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql & //&调入后台 [root@localhost ~]# netstat -ntpl | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 10566/mysqld //查看3306端口是否在监听状态 [root@localhost ~]# cp /usr/src/mysql-5.0.56/support-files/mysql.server /etc/init.d/mysqld [root@localhost ~]# chmod +x /etc/init.d/mysqld [root@localhost ~]# service mysqld restart Shutting down MySQL [确定] Starting MySQL [确定] [root@localhost ~]# chkconfig --add mysqld [root@localhost ~]# chkconfig --list mysqld mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@localhost ~]# export PATH=$PATH:/usr/local/mysql/bin [root@localhost ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile //设置MySQL程序执行路径 PHP编译安装 [root@localhost ~]# tar jxvf php-5.2.6.tar.bz2 -C /usr/src/ [root@localhost ~]# cd /usr/src/php-5.2.6/ [root@localhost php-5.2.6]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-sockets --enable-mbstring [root@localhost php-5.2.6]# make &&make install [root@localhost php-5.2.6]# cd [root@localhost ~]# cp /usr/src/php-5.2.6/php.ini-dist /usr/local/php5/php.ini //复制配置文件 [root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf //使用:set nu可显示行号 53 LoadModule php5_module modules/libphp5.so //确认有这一行 167 DirectoryIndex index.php index.html //修改首页文件 310 AddType application/x-httpd-php .php //增加支持php文件识别 [root@localhost ~]# service httpd restart 测试PHP与Apache是否协同工作 [root@localhost ~]# vim /usr/local/apache2/htdocs/index.php <?php phpinfo(); ?> 测试PHP与MySQL是否协同工作 [root@localhost ~]# vim /usr/local/apache2/htdocs/testdb.php <?php $link=mysql_connect('localhost','test',''); if (!$link) echo "Fail !!"; else echo "Success !!"; mysql_close (); ?> 如果测试MySQL错误会显示“Fail !!” phpMyAdmin数据库管理套件 [root@localhost ~]# tar zxvf phpMyAdmin-2.11.9.5-all-languages.tar.gz -C /usr/local/apache2/htdocs/ [root@localhost ~]# cd /usr/local/apache2/htdocs/ [root@localhost htdocs]# mv phpMyAdmin-2.11.9.5-all-languages phpMyAdmin [root@localhost htdocs]# cd phpMyAdmin/ [root@localhost phpMyAdmin]# cp config.sample.inc.php config.inc.php //复制配置样例 [root@localhost phpMyAdmin]# vim config.inc.php $cfg['blowfish_secret'] = '123456'; //查找blowfish_secret行,设置密码 编译安装Postfix [root@localhost ~]# service sendmail stop 关闭 sm-client: [确定] 关闭 sendmail: [确定] [root@localhost ~]# chkconfig --level 2345 sendmail off [root@localhost ~]# chkconfig --list sendmail sendmail 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭创建运行postfix服务的用户(postfix),组(postfix, postdrop)
[root@localhost ~]# groupadd -g 1200 postdrop [root@localhost ~]# groupadd -g 1000 postfix [root@localhost ~]# useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix 上述命令中,制定用户postfix的UID为1000,所属组为postfix,附加组为postdrop,且不创建宿主目录,禁止登陆到本地系统 [root@localhost ~]# tail -2 /etc/group postdrop:x:1200:postfix postfix:x:1000: [root@localhost ~]# tail -1 /etc/passwd postfix:x:1000:1000::/home/postfix:/sbin/nologin解压并释放源码包,合并补丁包
[root@localhost ~]# tar zxvf postfix-2.4.6.tar.gz -C /usr/src/ [root@localhost ~]# gunzip postfix-2.4.6-vda-ng.patch.gz [root@localhost ~]# mv postfix-2.4.6-vda-ng.patch /usr/src/ [root@localhost ~]# cd /usr/src/postfix-2.4.6/ [root@localhost postfix-2.4.6]# patch -p1 < ../postfix-2.4.6-vda-ng.patch //p1是数字,表示第一个补丁 预配置编译参数 在编译前需要使用“make makefiles”命令调整参数,以便postfix支持SASL认证和查询MySQL数据库。具体的编译参数可以参考源码目录中README_FILES子目录下的说明文件,SASL_README文件和MYSQL_README文件 因AMP平台采用源码编译安装,并使用RHEL5系统自带的cyrus-sasl认证软件,因此根据mysql,cyrus-sasl的库文件和头文件安装位置对编译参数CCARGS和AUXLIBS进行适当调整。配置命令如下。 [root@localhost postfix-2.4.6]# make makefiles \ > 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \ > -DUSE_CYRUS_SASL -I/usr/include/sasl ' \ > 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 ' ……………//省略显示 cat ../../conf/makedefs.out Makefile.in >Makefile [src/tlsmgr] cat ../../conf/makedefs.out Makefile.in >Makefile rm -f Makefile; (cat conf/makedefs.out Makefile.in) >Makefile 上述CCARGS参数:为编译器提供额外的参数,“-I”选项指出标准的额外头文件的存放目录,例如:mysql和cyrus-sasl的头文件分别位于目录:“/usr/local/mysql/lib/mysql”和“/usr/include/sasl” AUXLIBS参数:指出位于标准位置之外的额外函数库。如果需要连接SASL, MySQL或任何附加的函数库,而且他们不是存放在标准位置(/usr/lib目录),则必须在AUXLIBS参数中指出这些函数库的路径,例如,mysql和cyrus-sasl的库文件分别位于目录:“/usr/local/mysql/lib/mysql”,“/usr/lib/sasl2”。编译并进行安装
[root@localhost postfix-2.4.6]# make …….//省略显示 sl2 -lsasl2 -ldb -lnsl -lresolv cp tlsmgr ../../libexec [root@localhost postfix-2.4.6]# make install //执行命令后,其间会需要设置一些安装参数,如下 install_root: [/] //指定系统的根目录 tempdir: [/usr/src/postfix-2.4.6] //指定postfix-install脚本的临时文件目录 config_directory: [/etc/postfix] //设置postfix的配置文件存放目录 daemon_directory: [/usr/libexec/postfix] command_directory: [/usr/sbin] //设置postfix命令的存放目录 queue_directory: [/var/spool/postfix] //设置邮件队列目录 sendmail_path: [/usr/sbin/sendmail] newaliases_path: [/usr/bin/newaliases] mailq_path: [/usr/bin/mailq] mail_owner: [postfix] setgid_group: [postdrop] html_directory: [no] manpage_directory: [/usr/local/man] readme_directory: [no] ………//省略显示 Updating /usr/local/man/man8/trivial-rewrite.8... Updating /usr/local/man/man8/verify.8... Updating /usr/local/man/man8/virtual.8...Warning: you still need to edit myorigin/mydestination/mynetworks
parameter settings in /etc/postfix/main.cf.See also
for information about dialup sites or about sites inside a firewalled network.BTW: Check your /etc/aliases file and be sure to set up aliases
that send mail for root and postmaster to a real person, then run /usr/bin/newaliases. Postfix的目录及配置文件 /etc/postfix:该目录中包括Postfix服务的主配置文件,各类脚本,查询表等。 /usr/libexec/postfix/:该目录中包括Postfix服务各个服务程序文件。 /var/spool/postfix/:该目录中包括Postfix服务的邮件队列相关的子目录。 其中,每个队列目录用于保存不同的邮件,例如: lncoming(传入):刚接收到的邮件。 Active(活动):正在投递的邮件。 Deferred(推迟):以前投递失败的邮件。 HoId(约束):被阻止发送的邮件。 Corrupt(错误):不可读或不可分析的邮件。 /usr/sbin/:该目录中包括Postfix服务的管理工具程序,这些程序文件名以post开头。 其中,主要的几个程序文件及其作用如下。 postalias:用于构造,修建和查询别名表。 postconf:用于显示和编辑main.cf配置文件 postfix:用于启动,停止postfix,要求有root用户权限。 postmap:用于构建,修改或查询表。 postqueue:用于管理邮件队列,一般用户使用。 postsper:用于管理邮件队列,要求有root用户权限。 Postfix系统最主要的配置文件包括:/etc/postfix/main.cf和/etc/postfix/master.cf。前者是Postfix服务的配置文件。后者是master程序的配置文件。 在主配置文件main.cf中,可以设置的配置参数有三百多个。大部分的配置参数都被自动设置了默认值,如果在main.cf文件中没有对应的设置,那么Postfix服务器将默认值来启动及运行。 Postfix系统提供的postconf工具可以用来辅助配置,不带任何选项的Postfix命令将打印出当前Postfix服务所使用的配置参数,而添加“-n”选项时将列出不同于默认值得配置参数。 [root@localhost postfix-2.4.6]# cd [root@localhost ~]# postconf[root@localhost ~]# cd /etc/postfix/
[root@localhost postfix]# postconf -n > main2.cf [root@localhost postfix]# mv main.cf main.cf.bak //将原有配置文件改名进行备份 [root@localhost postfix]# mv main2.cf main.cf [root@localhost postfix]# cat main.cf command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 2 html_directory = no mail_owner = postfix mailq_path = /usr/bin/mailq manpage_directory = /usr/local/man newaliases_path = /usr/bin/newaliases …..//省略配置信息 Postfix的日志文件 Postfix系统的日志文件位于“/var/log/maillog”该文件中记录了Postfix服务器的运行状态信息(启动,出错及其它SMTP服务器的会话信息等)。在安装调试Postfix邮件系统及日常的维护过程中,经常使用带“-f”选项的tail命令来观察日志内容的实时更新。 [root@localhost postfix]# cd [root@localhost ~]# tail -f /var/log/maillog 如果日志内容较多,还可以使用“egrep”命令进行过滤,只关注包含“warning”“fatal”等较重要的事件记录。可以使用的命令参数如下: [root@localhost ~]# egrep '(reject | warning | error | fatal | panic):' /var/log/maillogPostfix的启动控制
Postfix系统的启动控制主要通过“/usr/sbin/postfix”命令进行只需要添加相应的“start”“stop”“check”“reload”参数即可分别 启动,停止,检查,重载postfix服务。该命令实际上调用“/etc/postfix/postfix-script”脚本来对Postfix服务进行控制。 [root@localhost ~]# postfix start postfix/postfix-script: starting the Postfix mail system [root@localhost ~]# netstat -antp | grep :25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 13598/master 当对main.cf配置文件进行修改后,可以执行“postfix”命令进行检查,检查无误后即可执行“postfix reload”命令来重新载入配置信息,而不需要重新启动postfix服务。 [root@localhost ~]# postfix check //若配置无误,不会反馈任何信息 [root@localhost ~]# postfix reload //重新载入配置 postfix/postfix-script: refreshing the Postfix mail system [root@localhost ~]# postfix stop //关闭postfix系统 postfix/postfix-script: stopping the Postfix mail system postfix/postfix-script: waiting for the Postfix mail system to terminate例示:电子邮件系统构建中,服务器所使用的相关配置环境如下:
IP地址:192.168.1.200 首选DNS 192.168.1.100 邮件域benet.com 邮件账户:使用本地系统用户 POP3/IMAP服务器软件:使用编译安装Dovecot软件包 AMP平台:使用编译安装的Apache, MySQL, PHP。 域名服务器:使用预先架设好的DNS服务器,已做好benet.com域的解析设置,并为该域添加了到192.168.1.200的MX邮件交换记录 配置DNS安装略过 [root@linux ~]# vim /var/named/chroot/etc/named.conf options { directory "/var/named"; }; zone "benet.com" IN { type master; file "benet.com.zone"; }; zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.arpa"; };[root@linux ~]# cd /var/named/chroot/var/named/
[root@linux named]# cp localdomain.zone benet.com.zone [root@linux named]# cp named.local 192.168.1.arpa [root@linux named]# vim benet.com.zone $TTL 86400 @ IN SOA benet.com. admin.benet.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS dns1.benet.com. IN MX 10 mail.benet.com. dns1 IN A 192.168.1.100 mail IN A 192.168.1.200[root@linux named]# vim 192.168.1.arpa
$TTL 86400 @ IN SOA benet.com. admin.benet.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS dns1.benet.com. 100 IN PTR dns1.benet.com. 200 IN PTR mail.benet.com.[root@linux named]# chown named.named benet.com.zone
[root@linux named]# chown named.named 192.168.1.arpa [root@linux named]# service named start 启动 named: [确定]配置并测试Postfix服务器
Postfix主要提供基于SMTP协议的发信服务,其中最基本的功能包括存储和发送邮件,实现这些功能需要在Postfix的主配置文件“/etc/postfix/main.cf”中设置。 需要注意的是main.cf文件中的参数值不能使用单引号或双引号,否则会被视为参数的一部分 [root@localhost ~]# vim /etc/postfix/main.cf …….//省略配置 inet_interfaces = 192.168.1.200, 127.0.0.1 //设置postfix服务监听的Ip 地址,缺省为all myhostname = mail.benet.com //设置postfix服务器使用的主机名 mydomain = benet.com //设置postfix服务器使用的邮件域 myorigin = $mydomain //设置外发邮件是发件人地址中的邮件域名 mydestination = $mydomain, $myhostname //设置可接收的邮件地址中的域名 home_mailbox = Maildir/ //设置邮件存储位置和格式 [root@localhost ~]# postfix reload postfix/postfix-script: refreshing the Postfix mail system 上述配置中,将mydestination参数的值设置为$mydomain, $myhostname以后,则发送到 和的邮件都可以被postfix服务器接收。各邮箱用户的邮件将被投递到各自宿主目录下的Maildir子目录中。 用户的邮箱空间用于保存各自的电子邮件内容,在postfix服务器中,支持如下两种最常见的邮箱存储方式(当指定的存储位置最后一个字符为“/”时,自动使用Maildir存储方式)。 Mailbox:这种方式将同一用户的所有邮件内容存储在同一个文件中,通常对应为目录“/var/spool/mail”中以用户名命名的文件,Mailbox存储方式相对比较古老,在邮件数量较多时查询和管理的效率较低。 Maildir:这种方式使用用户目录结构来存储用户的邮件内容,每一个用户对应一个文件夹,每一封邮件作为一个独立的文件保存,与Mailbox存储方式相比,Maildir方式的存储速度和效率更好,而且对于管理邮件内容也更为方便,大多数比较新的邮件服务器中采用了Maildir的邮件存储方式。添加邮件用户的账号
Postfix服务器默认使用本机中的系统用户为邮件账号,因此只需要添加Linux用户账号即可。测试可以添加连个邮件账号,并为其设置密码。 [root@localhost ~]# groupadd mailusers [root@localhost ~]# useradd -g mailusers -s /sbin/nologin qiao [root@localhost ~]# useradd -g mailusers -s /sbin/nologin xiang [root@localhost ~]# passwd qiao [root@localhost ~]# passwd xiang 因邮件用户并不需要使用Shell登陆linux系统,因此设置为“/sbin/nologin”以禁止登录。 SMTP发送邮件测试 使用telnet命令登录到邮件服务器的25 端口,并输入相关的SMTP命令,以邮件账号qiao@ benet.com作为发件人,给发送一封测试邮件。 [root@localhost ~]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 mail.benet.com ESMTP Postfix HELO localhost //宣告客户端主机地址 250 mail.benet.com MAIL FROM: //告诉服务器发件人地址 250 2.1.0 Ok RCPT TO: //告诉服务器收件人地址 250 2.1.5 Ok DATA //告知服务器要传送数据 354 End data with <CR><LF>.<CR><LF> Subject: A //设置邮件主题 love //输入邮件内容,最后以点号“.”结束 . 250 2.0.0 Ok: queued as 276443F837A QUIT //断开连接并退出 221 2.0.0 Bye Connection closed by foreign host. 邮件发送并投递成功以后,可以到服务器中xiang用户的宿主目录下查看。 [root@localhost~]#cat /home/xiang/Maildir/new/1295516698.Vfd00I118014M158616.localhost.localdomain Return-Path: //退信地址 X-Original-To: //来源地址 Delivered-To: //提交目标地址 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.benet.com (Postfix) with SMTP id 276443F837A //经由那些MTA接收 for <>; Thu, 20 Jan 2011 17:40:26 +0800 (CST) Subject: A Message-Id: <> Date: Thu, 20 Jan 2011 17:40:26 +0800 (CST) From: //发件人地址 To: undisclosed-recipients:;love
通过以上测试过程,已经看到Postfix服务器可以成功地发送并投递邮件了,但是只能在服务器上查看收到的邮件信息,若要使邮件收件人能够从其他主机上接受或查看邮件内容,还需要进一步的安装POP3或IMAP服务器一提供邮件下载服务。
构建Dovecot服务器
在整个电子邮件系统中,Postfix服务器作为一个MTA软件,也就是SMTP服务器,主机要提供邮件发送和投递的功能,若需要为MUA客户端软件提供接受功能,还得安装POP3或IMAP4协议的服务器程序。 Dovecot是一个安全性较好的POP3/IMAP4服务器软件,响应速度而且扩展性好Dovecot也默认使用linux的系统用户,并通过PAM(pluggable Authentication Module可插拔认证模块)方式进行身份认证,通过认证的用户可从邮箱中取出邮件。编译安装Dovecot软件包
[root@localhost ~]# useradd -u 410 -M -s /sbin/nologin dovecot [root@localhost ~]# tar zxvf dovecot-1.1.4.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/dovecot-1.1.4/ [root@localhost dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql [root@localhost dovecot-1.1.4]# make &&make install [root@localhost dovecot-1.1.4]# cd [root@localhost ~]# cp /etc/dovecot-example.conf /etc/dovecot.conf [root@localhost ~]# vim /etc/dovecot.conf #ssl_disable = no ssl_disable = yes //禁止ssl机制 #protocols = imap imaps protocols = pop3 imap //指定支持的邮件协议 #disable_plaintext_auth = yes disable_plaintext_auth = no //允许明文密码认证 # mail_location = maildir:~/Maildir mail_location = maildir:~/Maildir //设置邮件存储格式及位置 [root@mail ~]# vim /etc/pam.d/dovecot //创建PAM认证文件 auth required pam_nologin.so auth include system-auth account include system-auth session include system-auth 启动Dovecot服务,并验证其监听的TCP端口(100,143),Dovecot服务的启动程序位于“/usr/local/sbin/”目录中,使用“-c”选项可以指定所使用的配置文件的位置。如果使用默认配置文件,则直接“Dovecot”命令即可。 [root@mail ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf [root@mail ~]# netstat -nutpl | grep dovecot tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 4719/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 4719/dovecot [root@localhost ~]# vim /etc/profile //自动加载Dovecot服务 /usr/local/sbin/dovecot -c /etc/dovecot.conf使用Outlook Express客户端
编译安装Webmail
依次安装程序包,中文语言包 [root@mail ~]# tar jxvf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs/ [root@mail ~]# cd /usr/local/apache2/htdocs/ [root@mail htdocs]# mv squirrelmail-1.4.13/ webmail [root@mail htdocs]# cd webmail/ [root@mail webmail]# tar jxvf ~/zh_CN-1.4.13-20071220.tar.bz2 创建及调整数据目录,附件目录 [root@mail webmail]# mkdir -p attach data [root@mail webmail]# chown -R daemon:daemon attach/ data/ [root@mail webmail]# chmod 730 attach/ 建立config.php配置文件 [root@mail webmail]# cp config/config_default.php config/config.php [root@mail webmail]# vim config/config.php $squirrelmail_default_language = 'zh_CN'; $domain = 'benet.com'; $smtpServerAddress = 'localhost'; $smtpPort = 25; $imap_server_type = 'dovecot'; $imapPort = 143; $data_dir = '/usr/local/apache2/htdocs/webmail/data/'; $p_w_upload_dir = '/usr/local/apache2/htdocs/webmail/attach/'; 测试设置SMTP的用户认证
查看系统中以安装的“cyrus”相关的RPM软件包 [root@mail ~]# rpm -qa | grep cyrus cyrus-sasl-plain-2.1.22-5.el5_4.3 cyrus-sasl-lib-2.1.22-5.el5_4.3 cyrus-sasl-2.1.22-5.el5_4.3 cyrus-sasl-devel-2.1.22-5.el5_4.3 postfix系统通过调用Cyrus SASL的函数库,使用Cyrus SASL提供的验证后台程序saslauthd验证系统和密码,使用SMTP认证机制需要对Cyrus SASL进行设置,同时也需要对Postfix服务器的main.cf配置文件进行调整。 设置Cyrus SASL函数库,并启动saslauthd服务 建立SMTP认证的配置文件“/usr/lib/sasl2/smtpd.conf”,指定验证方式为saslauthd服务,该配置文件可参考“/usr/lib/sasl2/Sendmail.conf”的内容生成 [root@mail ~]# cp /usr/lib/sasl2/Sendmail.conf /usr/lib/sasl2/smtpd.conf [root@mail ~]# vim /usr/lib/sasl2/smtpd.conf pwcheck_method: saslauthd //在原配置行中加上一空格 [root@mail ~]# service saslauthd start 启动 saslauthd: [确定] [root@mail ~]# chkconfig --level 35 saslauthd on [root@mail ~]# chkconfig --list saslauthd saslauthd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭[root@mail ~]# vim /etc/postfix/main.cf
…….//省略配置 //添加以下配置 smtpd_sasl_auth_enable = yes //启用SMTP认证 smtpd_sasl_security_options = noanonymous //禁止匿名登录 mynetworks = 127.0.0.1 smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination 上述配置参数中,后面几行设置的作用如下: mynetworks:用于控制可以通过本服务器外发邮件的网络地址或IP地址,设置为127.0.0.1是为了确保Webmail系统可以正常发送邮件。 smtpd_recipient_restrictions:设置收件人地址过滤规则,其匹配策略是:“从上至下逐条检测有匹配即停止”其中:“permit_mynetworks:允许IP为mynetworks的客户使用本邮件系统寄出邮件”,“permit_sasl_authenticated:允许通过SMTP认证的用户向外发送邮件”。 reject_unauth_destination:当收件人地址不包括在Postfix的授权网络内时,将拒绝发送该邮件,Postfix的授权网络包括有以下配置参数指定的域及其子域:mydestination,inet_interfaces, virtual_alias_maps, virtual_mailbox_maps, relay_domian。 确认配置完毕,执行“postfix reload”命令重新加载配置信息。 [root@mail ~]# postfix reload postfix/postfix-script: refreshing the Postfix mail system测试SMTP发信认证
使用telnet命令进行验证时需要输入加密的用户和密码,加密字串的编码格式为BASE64,通过如下命令获取qiao的用户密码 [root@mail ~]# printf "qiao" | openssl base64 cWlhbw== [root@mail ~]# printf "123" | openssl base64 MTIz 记录上述命令的输出结果,并使用该字串进行SMTP发信认证。 [root@mail ~]# telnet mail.benet.com 25 Trying 192.168.1.200... Connected to mail.benet.com (192.168.1.200). Escape character is '^]'. 220 mail.benet.com ESMTP Postfix EHLO localhost //宣告客户端主机地址 250-mail.benet.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN //表明支持认证 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN设置用户别名与邮件群组
用户别民女个是邮件系统中的一个重要功能,主要用来实现邮件群发功能。邮件用户别名是实现依赖与aliases机制,而aliases机制需要用到查询表。 Postfix服务器在操作过程中经常需要做各种各样的转换与查询,例如:改写邮件地址,判断客户端是否来自授权网络,设定别名,很多运行参数都可以通过查询表(lookuptab)来决定。例如:将多个用户的邮件地址映射为一个地址向这个地址发送邮件将会向所有映射表中的用户发送邮件。 由于main.cf文件本身的配置格式限制,无法逐一描述这样的关键字与值的对应映射关系。在实际应用中,通常把这些对应关系都写入到另一个文件,也就是查询表中查询表保存了关键字(key)和一组值(value)间的简单对应关系,然后再main.cf配置文件中添加配置参数“alias_maps”,指定该文件即可 查询表对postfix服务器很重要,很多运行参数都需要用到查询表(lookup tab)。维护查询表是邮件系统管理员的一项重要工作。 修改main.cf配置文件,使用“/etc/aliases”文件的hash数据作为查询表 [root@mail ~]# vim /etc/postfix/main.cf alias_maps = hash:/etc/aliases设置邮件别名实现群发功能
根据Postfix服务器“alias_map”配置参数的指定,可以将邮件用户的别名设置到对应的查询表文件中,例如“/etc/aliases”文件。在该文件中,每一行对应为一条别名设置记录。配置格式为“别名:地址1,地址2,地址3,……..”。 在对“/etc/aliases”文件内容进行修改后,需要执行“newaliases”命令,以便重新生成“/etc/aliases.db”数据库文件。postfix系统将识别并使用“/etc/aliases.db”文件中的设置。 修改“/etc/aliases”文件,添加一条别名记录。 [root@mail ~]# vim /etc/aliases //在文件最后一行添加 mailgroup: qiao, xiang, root [root@mail ~]# newaliases 应用上述设置以后,发往的所有邮件将自动转发到映射用户的邮箱。设置邮件大小,邮箱空间限制
Postfix系统默认支持投递10MB大小的邮件,需要注意的是这是被编码后的邮件大小而经过base64编码后的邮件一般大小会增大,如果需要更改发送邮件的大小的值,只需要修改main.cf文件,添加配置参数“message_size_limit”即可,该配置参数将对系统用户和虚拟用户邮件同时起作用。 修改main.cf配置文件,将可发送邮件的大小限制为20MB并重新加载配置信息。 [root@mail ~]# vim /etc/postfix/main.cf message_size_limit = 20971520限制用户的邮箱空间大小
在postfix邮件系统中,根据邮件用户的类型,邮件存储的方式不同,可以分别采取不同的方法来限制用户的邮箱空间大小。 mailbox_size_limit配置参数 主要针对使用Mailbox邮箱存储方式的情况,默认的限制为50MB。该配置参数对系统用户起作用。 virtual_mailbox_limit配置参数 主要针对使用虚拟邮件用户的情况,默认值也是50MB,安装VDA补丁以后,该配置参数对使用mailbox或maildir存储方式的用户都起作用。 quota磁盘配额功能 主要针对使用linux系统用户作为邮箱帐户的情况,可以直接使用linux中的quota磁盘配额功能,这种方法对使用mailbox或maildir存储方式的用户都起作用