如何配置postfixubuntu配置邮件服务器器

RHCE 系列(九):如何使用无客户端配置 Postfix 邮件服务器(SMTP)
-25%-59%-81%
尽管现在有很多在线联系方式,电子邮件仍然是一个人传递信息给远在世界尽头或办公室里坐在我们旁边的另一个人的有效方式。
下面的图描述了电子邮件从发送者发出直到信息到达接收者收件箱的传递过程。
电子邮件如何工作
要实现这一切,背后发生了好多事情。为了使电子邮件信息从一个客户端应用程序(例如 、Outlook,或者 web 邮件服务,例如 Gmail 或 Yahoo 邮件)投递到一个邮件服务器,并从其投递到目标服务器并最终到目标接收人,每个服务器上都必须有 SMTP(简单邮件传输协议)服务。
这就是为什么我们要在这篇博文中介绍如何在 RHEL 7 中设置 SMTP 服务器,从本地用户发送的邮件(甚至发送到另外一个本地用户)被转发(forward)到一个中央邮件服务器以便于访问。
在这个考试的要求中这称为无客户端(null-client)安装。
在我们的测试环境中将包括一个起源(originating)邮件服务器和一个中央服务器或中继主机(relayhost)。
起源邮件服务器: (主机名:
/ IP: 192.168.0.18)
中央邮件服务器: (主机名:
/ IP: 192.168.0.20)
我们在两台机器中都会使用你熟知的 /etc/hosts 文件做名字解析:
192.168.0.18
192.168.0.20
安装 Postfix 和防火墙/SELinux 注意事项
首先,我们需要(在两台机器上):
1、 安装 Postfix:
# yum update && yum install postfix
2、 启动服务并启用开机自动启动:
# systemctl start postfix
# systemctl enable postfix
3、 允许邮件流量通过防火墙:
# firewall-cmd --permanent --add-service=smtp
# firewall-cmd --add-service=smtp
在防火墙中开通邮件服务器端口
配置 Postfix
Postfix 的主要配置文件是 /etc/postfix/main.cf。这个文件本身是一个很大的文本文件,因为其中包含了解释程序设置的用途的注释。
为了简洁,我们只显示了需要编辑的行(没错,在起源服务器中你需要保留 mydestination 为空;否则邮件会被存储到本地,而不是我们实际想要发往的中央邮件服务器):
myhostname =
mydomain =
myorigin = $mydomain
inet_interfaces = loopback-only
mydestination =
relayhost = 192.168.0.20
配置 Postfix
myhostname =
mydomain =
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.0.0/24, 127.0.0.0/8
如果还没有设置,还要设置相关的 SELinux 布尔值永久为真:
# setsebool -P allow_postfix_local_write_mail_spool on
设置 Postfix SELinux 权限
上面的 SELinux 布尔值会允许中央服务器上的 Postfix 可以写入邮件池(mail spool)。
6、 在两台机子上重启服务以使更改生效:
# systemctl restart postfix
如果 Postfix 没有正确启动,你可以使用下面的命令进行错误处理。
# systemctl -l status postfix
# journalctl -xn
# postconf -n
测试 Postfix 邮件服务
要测试邮件服务器,你可以使用任何邮件用户代理(Mail User Agent,MUA),例如 。
由于我个人喜欢 mutt,我会在 box1 中使用它发送邮件给用户 tecmint,并把现有文件(mailbody.txt)作为信息内容:
# mutt -s "Part 9-RHCE series"
& mailbody.txt
测试 Postfix 邮件服务器
现在到中央邮件服务器()以 tecmint 用户登录,并检查是否收到了邮件:
# su & tecmint
检查 Postfix 邮件服务器发送
如果没有收到邮件,检查 root 用户的邮件池看看是否有警告或者错误提示。你也许需要使用 确保两台服务器运行了 SMTP 服务,并在中央邮件服务器中打开了 25 号端口:
# nmap -PN 192.168.0.20
Postfix 邮件服务器错误处理
像本文中展示的设置邮件服务器和中继主机是每个系统管理员必须拥有的重要技能,也代表了理解和安装更复杂情景的基础,例如一个邮件服务器托管有多个邮件账户(甚至成百上千)的域名。
(请注意这种类型的设置需要有 DNS 服务器,这不在本文的介绍范围),但你可以参照下面的文章设置 DNS 服务器:
最后,我强烈建议你熟悉 Postfix 的配置文件(main.cf)和这个程序的帮助手册。如果有任何疑问,别犹豫,使用下面的评论框或者我们的论坛
告诉我们吧,你会从世界各地的 Linux 高手中获得几乎是及时的帮助。
作者: 译者: 校对:
原创编译, 荣誉推出
评论功能关闭
根据国家法律法规要求,本站暂时关闭文章评论功能。开放时间不确定。我们将谋求一种可以让大家更好的发表意见的方式。
根据国家法律法规要求,只有实名认证后才可以发表评论。
共计翻译: 125 篇
| 共计贡献: 817 天
贡献时间: -&
尽管现在有很多在线联系方式,电子邮件仍然是一个人传递信息给远在世界尽头或办公室里坐在我们旁边的另一个人的有效方式。 下面的图描述了电子邮件从发送者发出直到信息到达接收者收件箱的传递过程。
电子邮件如何工作 要实现这一切,背后发生了好多事情。为了使电子邮件信息从一个客户端应用程序(例如 Thunderbird、Outlook,或者 web 邮件服务,例如 Gmail 或 Yahoo 邮件)投递到一个邮件服务器,并从其投递到目标服务器并最终到目标接收人,每个服务器上都必须有 SMTP(简单邮件传输协议)服务。 这就是为什么我们要在这篇博文中介绍
分享到微信
打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。
请将我们加入您的广告过滤器的白名单,请支持开源站点。谢谢您。用户名:不以一人
文章数:21
访问量:7756
注册日期:
阅读量:1297
阅读量:3317
阅读量:581722
阅读量:466272
51CTO推荐博文
postfix全功能邮件服务器配置
1.postfix所需软件包及存放目录
httpd-2.2.9.tar.gz 安装源码包apache
mysql-5.0.56.tar.gz 安装源码包mysql
php-5.2.6.tar.bz2 安装php软件
postfix-2.6.2.tar.gz postfix主程序
postfix-2.6.2-vda-ng.patch.gz postfix的补丁包
dovecot-1.1.4.tar.gz IMAP和POP3邮件服务器软件
squirrelmail-1.4.13.tar.bz2 web界面邮件管理
zh_CN-1.4.13-.tar.bz2 汉化包
extman-0.2.5.tar.gz 邮件后台管理程序
extmail-1.0.5.tar.gz web界面邮件管理
courier-authlib-0.62.4.tar.bz2 SMTP发信认证
Unix-Syslog-1.1.tar.gz
DBI-1.616.tar.gz
DBD-mysql-4.020.tar.gz 以上三个包为extmail的倚赖包
GD-2.46.tar.gz
File-Tail-0.99.3.tar.gz
rrdtool-1.2.23-3.el5.i386.rpm
rrdtool-perl-1.2.23-3.el5.i386.rpm 以上四个包为extman的倚赖包
fp-Linux-i686-ws.tar.gz
MailScanner-4.84.3-1.rpm.tar.gz
Mail-SpamAssassin-3.3.2.tar.gz
你可以把这些软件包放在同一个目录下,这样方便查找安装,本实验我把这些软件包放在了root的家目录下的mail目录下([root@localhost mail]#)
一 安装环境
1.安装apache:
通常情况下我们都把开源软件包都安装在/usr/local/src/下,这样方便管理和维护
[root@localhost mail]#tar Czxvf httpd-2.2.9.tar.gz -C /usr/local/src/ //解压软件包到/usr/local/src/
[root@localhost mail]#cd /usr/local/src/httpd-2.2.9 //切换到解压后的目录中
[root@localhost httpd-2.2.9]#./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite //编译 ./configure 后面根据具体情况加入相应参数
#make //编辑
#make install //安装
这里我们并没有将Suexec编译进apache中去,提到这个的原因是因为后面我们装postfix时候的后台管理extman是通过CGI的方式来调用程序的,如果不启用Suexec的话那么就会限制其他用户调用CGI程序,但考虑到启用Suexec的风险我们在此就不启用它了。(启用方式:--enable-suexec Cwith-suexec-caller=daemon Cwith-suexec-docroot=/usr/local/apache2/htdocs)
2.安装mysql:
[root@localhost mail]# useradd CM Cs /sbin/nologin mysql //添加mysql用户,如果安装系统时候已经装过mysql会提示用户已存在,建议在安装前先卸载掉系统自带的mysql,卸载完成后必须重启,否则新装的mysql会无法启动,提示错误信息3306端口被占有
[root@localhost mail]#tar -zxvf mysql-5.0.56.tar.gz -C /usr/local/src
[root@localhost mail]#cd /usr/local/src/mysql-5.0.56
[root@localhost mysql-5.0.56]#./configure --prefix=/usr/local/mysql
[root@localhost mysql-5.0.56]# make
[root@localhost mysql-5.0.56]# make install
[root@localhost mysql-5.0.56]#cp support-files/f /f 复制主配置文件
[root@localhost mysql-5.0.56]#/usr/local/mysql/bin/mysql_install_db --user=mysql 初始化
[root@localhost mysql-5.0.56]#chown -R root:mysql /usr/local/mysql
[root@localhost mysql-5.0.56]#chown -R mysql /usr/local/mysql/var
[root@localhost mysql-5.0.56]#echo “/usr/local/mysql/lib/mysql” && /etc/ld.so.conf 添加库文件路径
[root@localhost mysql-5.0.56]#ldconfig 刷新库文件搜索路径
[root@localhost mysql-5.0.56]#/usr/local/mysql/bin/mysqld_safe --user=mysql & 后台安全启动 (如果显示启动并且卡住不动按回车)
#cd /usr/local/src/mysql-5.0.56
[root@localhost mysql-5.0.56]#cp support-files/mysql.server /etc/init.d/mysqld 复制启动脚本
[root@localhost mysql-5.0.56]#chmod +x /etc/init.d/mysqld 赋予脚本执行权限
[root@localhost mysql-5.0.56]#chkconfig --add mysqld 添加到系统自动启动服务中
[root@localhost mysql-5.0.56]#chkconfig mysqld on 默认启动mysql
[root@localhost mysql-5.0.56]#chkconfig --list mysqld 查看mysql在什么级别启动或者关闭
[root@localhost mysql-5.0.56]#echo “PATH=$PATH:/usr/local/mysql/bin” && /etc/profile 设置系统全局的环境变量PATH值,方便使用mysql数据库命令
3.安装php:
[root@localhost mail]#tar -jxvf php-5.2.6.tar.bz2 -C /usr/local/src
[root@localhost mail]#cd /usr/local/src/php-5.2.6
[root@localhost php-5.2.6]#./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5
[root@localhost php-5.2.6]# make
[root@localhost php-5.2.6]# make test
[root@localhost php-5.2.6]# make install
[root@localhost php-5.2.6]# cp php.ini-dist /usr/local/php5/php.ini 复制配置文件
[root@localhost php-5.2.6]# vim /usr/local/apache2/conf/httpd.conf 修改apache服务的主配置文件使其支持php
修改如下内容:
LoadModule php5_module modules/libphp5.so 确认这行的存在,如果没有就重新编译php
AddType application/x-httpd-php .php 添加这行记录
DirectoryIndex index.php index.html 在这行添加关于php格式的首页
然后保存退出
4.测试php是否与apache整合成功
[root@localhost ~]# vim /usr/local/apache2/htdocs/test.php
phpinfo();
在浏览器中输入http://192.168.2.100/test.php 看到下图表示跟apache服务整合成功
[root@localhost ~]# vim /usr/local/apache2/htdocs/testdb.php
$link=mysql_connect( 'localhost','test','');
If (!$link) echo &sorry It is Failed !!!&;
else echo &Good It is OK !!!&;
mysql_close();
在IE浏览器中输入网址http://192.168.2.100/testdb.php 看到下图表示跟mysql服务整合成功
至此环境搭建完成
二 安装postfix 软件
1. 安装postfix之前首先停止掉系统自带的sendmail软件
[root@localhost mail]#service sendmail stop
[root@localhost mail]#chkconfig --level 2345 sendmail off
2.添加组和用户
[root@localhost mail]#groupadd -g 1200 postdrop
[root@localhost mail]#groupadd -g 1000 postfix
[root@localhost mail]#useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix
不创建宿主目录 附属组
3.安装postfix软件及依赖包
[root@localhost mail]#tar -zxvf postfix-2.6.2.tar.gz -C /usr/local/src
[root@localhost mail]#cp postfix-2.6.2-vda-ng.path.gz /usr/local/src 补丁文件,用以支持虚拟用户设置配额
[root@localhost mail]#cd /usr/local/src
[root@localhost src]#gunzip postfix-2.6.2-vda-ng.path.gz
[root@localhost src]# cd postfix-2.6.2
打补丁(注意此处-p1,后面是数字1而不是字母l)
以上显示表示补丁已经打上。
[root@localhost postfix-2.6.2]# 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'
[root@localhost postfix-2.6.2]# make
[root@localhost postfix-2.6.2]# make install
安装过程中会出现互动提问,直接选择默认设置即可。
4.postfix主配置文件修改
[root@localhost postfix-2.6.2]#vim /etc/postfix/main.cf
需要修改和添加的内容如下:
Inet_interfaces = all 默认设置
myhostname =
mydomain =
myorigin = $mydomain 外发邮件时发件人地址中的邮件域名
mydestination = $mydomain, ,$myhostnam ,
可接收的邮件地址中的域名
home_mailbox = Maildir/ 邮件存储位置格式
[root@localhost postfix-2.6.2]#postfix check 检查配置
[root@localhost postfix-2.6.2]#postconf -m //查看是否支持mysql查询
[root@localhost postfix-2.6.2]#postfix start //启动服务
5.smtp发送邮件测试
[root@localhost postfix-2.6.2]#groupadd mailusers //添加mailusers组
[root@localhost postfix-2.6.2]#useradd -g mailusers -s /sbin/nologin wamgshuai //添加用户
[root@localhost postfix-2.6.2]#useradd -g mailusers -s /sbin/nologin test //添加用户
[root@localhost postfix-2.6.2]#passwd wangshuai //给用户wangshuai设置密码
[root@localhost postfix-2.6.2]#passewd test //给用户test设置密码
SMTP发送邮件测试
[root@localhost postfix-2.6.2]#telnet localhost 25 连接本地的SMPT端口
Tring 127.0.0.1..
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
ESMTP Postfix
Hello localhost 宣告客户端主机地址
MAIL FROM: 发信人地址
250 2.1.0 ok
收信人地址
250 2.1.5 ok
DATA 标记开始写信
354 End data with &CR&&LF&.&CR&&LF&
Subject: this is a test! 信件题目
This is a test mail.
. “点”表示信件结束
250 2.0.0. ok:queued as 2F9AD787DA
221 2.0.0 Bye
Connection closed by foreign host.
查看接收到的邮件
[root@localhost~]#cat /home/test/Maildir/new/ 按tab键
看到的内容如下:
[root@localhost~]#cat /home/test/Maildir/new/.V803Ie48bM117168.localhost.localdomain
Return-Path: &&
X-Original-To:
Delivered-To:
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
(Postfix) with SMTP id 3EA2E2CEB07
for &&; Wed, 11 Apr :15 +0800 (CST)
subject:this is a test!
Message-Id: &50.3EA2E2CEB07@&
Date: Wed, 11 Apr :15 +0800 (CST)
To: undisclosed-recipients:;
test one !!!
可以看见刚才发的那封邮件,说明SMPT没有问题。
三 安装Dovecot邮局软件 (提供pop3/imap4协议)
1.安装Dovecot
[root@localhost mail]# useradd -M -s /sbin/nologin dovecot
[root@localhost mail]# tar -zxvf dovecot-1.1.4.tar.gz -C /usr/local/src
[root@localhost mail]# cd /usr/local/src/dovecot-1.1.4
[root@localhost dovecot-1.1.4]# make
[root@localhost dovecot-1.1.4]# make install
2.配置Dovecot
[root@localhost dovecot-1.1.4]#cp /etc/dovecot-example.conf /etc/dovecot.conf 复制主配置文件
[root@localhost dovecot-1.1.4]#vim /etc/dovecot.conf
修改及添加内容如下:
ssl_disable = yes 禁用SSL机制
protocols = pop3 imap 指定邮局协议
disable_plaintext_auth = no 允许明文密码认证
mail_location = maildir:~/Maildirf 设置邮件存储格式和位置
[root@localhost dovecot-1.1.4]#vim /etc/pam.d/dovecot 创建pam认证文件
添加如下内容:
auth required pam_nologin.so
auth include system-auth
account include system-auth
session include system-auth
[root@localhost dovecot-1.1.4]#/usr/local/sbin/dovecot -c /etc/dovecot.conf 启动
3.pop3邮件接收测试
[root@localhost dovecot-1.1.4]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user test //输入用户名
pass 12test //输入密码
+OK Logged in.
list //列出邮件列表
+OK 1 messages:
retr 1 //查看第一封邮件
+OK 481 octets
下面显示邮件内容,测试完成
Return-Path: &&
X-Original-To:
Delivered-To:
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
(Postfix) with SMTP id 3EA2E2CEB07
for &&; Wed, 11 Apr :15 +0800 (CST)
subject:this is a test!
Message-Id: &50.3EA2E2CEB07@&
Date: Wed, 11 Apr :15 +0800 (CST)
To: undisclosed-recipients:;
test one !!!
输入quit退出
四 安装Webmail软件
1.squirrelmail安装
[root@localhost mail]# tar -jxvf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs
[root@localhost mail]# cd /usr/lcaol/apache2/htdocs/
[root@localhost htdocs]# mv squirrelmail-1.4.13 webmail
[root@localhost mail]# tar -jxf zh_CH-1.4.13.tar.gz -C /usr/local/apache2/htdocs/webmail 解压汉化软件
2.配置webmail
[root@localhost htdocs]#cd webmail
[root@localhost webmail]# mkdir -p attach data
[root@localhost webmail]# chown -R daemon:daemon attach/ data/
[root@localhost webmail]# chmod 730 attache/
[root@localhost webmail]# cp config/config_default.php config/config.php 创建配置文件
[root@localhost webmail]# vim config/config.php
添加或修改内容如下:
$squirrelmail_default_language = ‘zh_CN’;
$default_charset = ‘zh_CN.UTF-8’;
$domain = ‘’;
$smtpServerAddress = ‘localhost’; 设置发信服务器地址
$smtpPort = 25; 设置发信服务器端口
$imap_server_type = 'dovecot'; 设置收信服务器软件
$imapPort = 143; 设置收信服务器端口
$data_dir = '/usr/local/apache2/htdocs/webmail/data/';
$attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/';
#/usr/local/apache2/bin/apachectl restart 重启 apache 服务
客户端IE地址栏中输入
(前提可以被解析即安装有DNS服务器,否则用ip:)
即可看见下图:
到此我们的postfix+webmail已经安装完成,但是为了使我们更好的管理维护邮件服务器的前端与后台接下来我们来安装extmail和extman以便实现我们的需求。
五 初始化extmail软件
数据库脚本设置
[root@localhost mail]# service mysqld restart
[root@localhost mail]# tar -zxvf extman-0.2.5.tar.gz -C /usr/local/src
[root@localhost mail]# cd /usr/local/src/extman-0.2.5/docs
[root@localhost docs]# mysql -u root -p & extmail.sql
[root@localhost docs]# mysql -u root -p &init.sql //脚本导入数据库的时候会询问密码,默认情况下root用户密码为空
六 配置postfix
1.修改配置文件
[root@localhost docs]#vim /etc/postfix/main.cf
mydestination = $mydomain, $myhostname 该行需要注释掉(在前面加上#即可)
virtual_mailbox_base = /mailbox 指定虚拟邮箱存储目录的路径起点
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
指定虚拟邮件用户对应的别名文件位置
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
指定记录虚拟邮箱地址与存储位置对应关系的映射文件位置
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
设置postfix服务器可以接收的虚拟邮件域的域名
virtual_uid_maps = static:1000 设置所有虚拟邮件用户映射的本地用户的UID号
virtual_gid_maps = static:1000 设置所有虚拟邮件用户映射的本地组的GID 号
[root@localhost docs]#cp mysql_virtual_* /etc/postfix/ 在上面的三行配置中指定了这三个文件
七 为虚拟用户设置SMTP发信认证
1.安装软件
注意:确认系统中的rpm格式的mysql 软件被卸载
[root@localhost mail]# tar -jxvf courier-authlib-0.62.4.tar.bz2 -C /usr/local/src
[root@localhost mail]# cd /usr/local/src/courier-authlib-0.62.4/
[root@localhost courier-authlib-0.62.4]#./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql
[root@localhost courier-authlib-0.62.4]# make
[root@localhost courier-authlib-0.62.4]# make install
[root@localhost courier-authlib-0.62.4]# make install-configure 生成默认配置文件authmysqlrc 和 authdaemonrc
2.添加courier-authlib的库文件路径
[root@localhost courier-authlib-0.62.4]#vim /etc/ld.so.conf
加入下面内容:
/usr/local/courier-authlib/lib/courier-authlib
[root@localhost courier-authlib-0.62.4]#ldconfig重新读取配置文件
3 修改authdaemonrc主配置文件
[root@localhost courier-authlib-0.62.4]#cd /usr/local/courier-authlib/etc/authlib
[root@localhost authlib]# cp authdaemonrc authdaemonrc.bak
[root@localhost authlib]# vim authdaemonrc
修改如下内容:
authmodulelist=”authmysql”
authmodulelistorig=”authmysql”
[root@localhost authlib]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon
4 修改authmysqlrc 文件
[root@localhost authlib]# cp authmysqlrc authmysqlrc.bak
[root@localhost authlib]# vim authmysqlrc
修改或添加如下内容:
MYSQL_SERVER localhost 数据库服务器位置
MYSQL_USERNAME extmail 数据库管理员账户
MYSQL_PASSWORD extmail 数据库管理员账户密码
MYSQL_SOCKET /tmp/mysql.sock 文件位置
MYSQL_DATABASE extmail 虚拟用户数据库
MYSQL_USER_TABLE mailbox 从mailbox表获得邮件账户信息
MYSQL_CRYPT_PWFIELD password 从password字段获得账户密码
MYSQL_UID_FIELD uidnumber 从uidnumber字段获得映射的本地用户UID
MYSQL_GID_FIELD gidnumber 从gidnumber字段获得映射的本地组GID
MYSQL_LOGIN_FIELD username 从username字段获得账户名称,带@后缀
MYSQL_HOME_FIELD concat('/mailbox/',homedir)合并出用户的宿主目录路径
MYSQL_NAME_FIELD name 从name 字段获得账户名称,不带@后缀
MYSQL_MAILDIR_FIELD concat('/mailbox/',maildir)合并出用户的邮件存储路径
5 复制脚本,启动服务
[root@localhost authlib]# cd /usr/local/src/courier-authlib-0.62.4/
[root@localhost courier-authlib-0.62.4]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
[root@localhost courier-authlib-0.62.4]#chmod 755 /etc/rc.d/init.d/courier-authlib
[root@localhost courier-authlib-0.62.4]#chkconfig --level 35 courier-authlib on
[root@localhost courier-authlib-0.62.4]#service courier-authlib start
八 修改Cyrus sasl设置
[root@localhost ~]# vim /usr/lib/sasl2/smtpd.conf
加入如下内容:
pwcheck_method:authdaemond
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
九 修改 Dovecot配置
1.修改Dovecot的主配置文件
[root@localhost ~]#vim /etc/dovecot.conf
mail_location = maildir:/mailbox/%d/%n/Maildir
…………………………………………………………………….省略号表示文件中原有的内容
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot-mysql.conf
userdb sql {
args = /etc/dovecot-mysql.conf
……………………………………………………………………...省略号表示文件中原有内容
2 建立数据查询配置文件
[root@localhost ~]#vim /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = CRYPT 数据库中存储的密码串的加密算法
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = ‘%u’查询用户密码的语句
user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = ‘%u’ 查询用户身份语句
十 建立虚拟用户
建立邮箱目录并调整权限
[root@localhost ~]#mkdir -p /mailbox/extmail.org/postmaster/Maldir
[root@localhost ~]#cd /mailbox/extmail.org/postmaster/Maildir
[root@localhost Maldir]# chown -R postfix:postfix /mailbox
[root@localhost Maldir]# dovecot 启动服务
虚拟用户测试
确认authlib服务
[root@localhost Maldir]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail
Authentication succeeded. 成功提示信息
Authenticated: postmaster@extmail.org (uid 1000, gid 1000)
Home Directory: /mailbox/extmail.org/postmaster
Maildir: /mailbox/extmail.org/postmaster/Maildir/
Quota: (none)
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
基于Perl 语言开发的中文Webmail管理平台
套件:ExtMail --Web 界面的邮件操作
Extman CWeb 界面的邮件系统管理
[root@localhost mail]# tar -zxvf Unix-Syslog-1.1.tar.gz -C /usr/local/src
[root@localhost mail]# cd /usr/local/src/Unix-Syslog-1.1
[root@localhost Unix-Syslog-1.1]# perl Makefile.PL
[root@localhost Unix-Syslog-1.1]# make
[root@localhost Unix-Syslog-1.1]# make install
[root@localhost mail]# tar -zxvf DBI-1.616.tar.gz -C /uar/local/src
[root@localhost mail]# cd /usr/local/src/DBI-1.616
[root@localhost DBI-1.616]# perl Makefile.PL
[root@localhost DBI-1.616]# make
[root@localhost DBI-1.616]# make install
[root@localhost mail]# tar -zxvf DBD-mysql-4.020.tar.gz -C /usr/local/src
[root@localhost mail]# cd /usr/loca/src/DBD-4.020
[root@localhost DBD-mysql-4.020]# perl Makefile.PL
[root@localhost DBD-mysql-4.020]# make
[root@localhost DBD-mysql-4.020]# make install
注意以上三个包在编译安装过程可能会提示警告信息 隐式函数 计算出的变量值未被使用等,只要没有error信息就一切ok
安装ExtMail
[root@localhost mail]# tar -zxvf extmail-1.0.5.tar.gz -C /usr/local/apache2/htdocs
[root@localhost mail]# cd /usr/local/apache2/htdocs
[root@localhost htdocs]# mv extmail-1.0.5 extmail
[root@localhost htdocs]# cd extmail
[root@localhost extmail]# chown -R postfix:postfix cgi
[root@localhost extmail]# cp webmail.cf.default webmail.cf
修改配置文件
[root@localhost extmail]#vim webmail.cf
SYS_CONFIG = /usr/local/apache2/htdocs/extmail/ 程序根目录
SYS_LANGDIR = /usr/local/apache2/htdocs/extmail/lang 语言包文件目录
SYS_TEMPLDIR = /usr/local/apache2/htdocs/extmail/html 系统模版目录
SYS_MAILDIR_BASE = /mailbox 邮件存储目录
SYS_MYSQL_USER = extmail 访问mysql数据库的用户
SYS_MYSQL_PASS = extmail 访问mysql数据库的用户的密码
SYS_MYSQL_DB = extmail 使用数据库的名称
SYS_MYSQL_HOST = localhost 数据库服务器地址
SYS_MYSQL_SOCKET = /tmp/mysql.sock 数据库套接文件位置
修改apache服务,添加虚拟主机
[root@localhost extmail]#vim /usr/local/apache2/conf/httpd.conf
添加如下内容:
NameVirtualHost *:80
&VirtualHost *:80&
ServerName
DocumentRoot /usr/local/apache2/htdocs/extmail/html/
ScriptAlias /extmail/cgi/ &/usr/local/apache2/htdocs/extmail/cgi/&
Alias /extmail &/usr/local/apache2/htdocs/extmail/html/&
&/VirtualHost&
User postfix 找到 User 该用户为postfix
Group postfix 找到 Group 该组为postfix
这里由于前面我们并没有启用Suexec 所以我们没有在虚拟主机中添加 SuexecUerGroup postfix postfix
[root@localhost extmail]#/usr/local/apache2/bin/apachectl restart //重启服务
[root@localhost mail]# tar -zxvf GD-2.46.tar.gz -C /usr/local/src
[root@localhost mail]# cd /usr/local/src/GD-2.46
[root@localhost GD-2.46]# perl Makefile.PL
[root@localhost GD-2.46]# make
[root@localhost GD-2.46]# make install
[root@localhost mail]# tar -zxvf File-Tail-0.99.3.tar.gz -C /uar/local/src
[root@localhost mail]# cd /usr/local/src/File-Tail-0.99.3
[root@localhost File-Tail-0.99.3]# perl Makefile.PL
[root@localhost File-Tail-0.99.3]# make
[root@localhost File-Tail-0.99.3]# make install
[root@localhost mail]# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm
[root@localhost mail]# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm
Extman 套件
[root@localhost mail]# tar -zxvf extman-0.2.5.tar.gz -C /usr/local/apache2/htdocs
[root@localhost mail]# cd /usr/local/apache2/htdocs
[root@localhost htdocs]# mv extman-0.2.5 extman
[root@localhost htdocs]# cd extman
[root@localhost extman]# chown -R postfix:postfix cgi
[root@localhost extman]# mkdir /tmp/extman // 临时回话保存目录
[root@localhost extman]# chown -R postfix:postfix /tmp/extman
修改配置文件
[root@localhost extman]# vim /usr/local/apache2/htdocs/extman/webman.cf
修改如下内容:
SYS_CONFIG = /usr/local/apache2/htdocs/extman/ 程序根目录
SYS_LANGDIR = /usr/local/apache2/htdocs/extman/lang 语言包文件目录
SYS_TEMPLDIR = /usr/local/apache2/htdocs/extman/html 系统模版目录
SYS_MAILDIR_BASE = /mailbox 邮件数据存放路径
SYS_MYSQL_USER = webman 访问mysql数据库的用户
SYS_MYSQL_PASS = webman 访问mysql数据库的用户的密码
SYS_MYSQL_DB = extmail 使用的数据库名称
SYS_MYSQL_HOST = localhost 数据库服务器地址
SYS_MYSQL_SOCKET = /tmp/mysql.sock 数据库套接文件位置
调整apache主配文件。添加extman相关目录别名
[root@localhost extman]# vim /usr/local/apache2/conf/httpd.conf
修改内容如下:
NameVirtualHost *:80
&VirtualHost *:80&
ServerName
DocumentRoot /usr/local/apache2/htdocs/extmail/html/
ScriptAlias /extmail/cgi/ &/usr/local/apache2/htdocs/extmail/cgi/&
Alias /extmail &/usr/local/apache2/htdocs/extmail/html/&
ScriptAlias /extman/cgi &/usr/local/apache2/htdocs/extman/cgi/&
Alias /extman &/usr/local/apache2/htdocs/extman/html/&
&/VirtualHost&
#/usr/local/apache2/bin/apachectl restart
现在在客户端访问:
就可以看见ExtMail的登录界面了。
在客户端访问:
/extman 就可以看见Extman后台管理登录界面了
默认管理员账户:root@extmail.org
默认密码:extmail*123*
登录后界面如下:
[root@localhost ~]# ln Csf
/usr/local/apache2/htdocs/extman/addon/mailgraph_ext/mailgraph-init
/usr/sbin/
[root@localhost ~]# ln Csf
/usr/local/apache2/htdocs/extman/addon/mailgraph_ext/qmonitor-init
/usr/sbin/
[root@localhost ~]# cp Ca
/usr/local/apache2/htdocs/extman/addon/mailgraph_ext
/usr/local
[root@localhost ~]# mailgraph-init start
[root@localhost ~]# qmonitor start
[root@localhost ~]# echo “/usr/sbin/mailgraph-init start” && /etc/rc.d/rc.local
[root@localhost ~]# echo “/usr/sbin/qmoonitor-init start” && /etc/rc.d/rc.local
根据客户端的主机名/地址过滤邮件
[root@localhost ~]# vim /etc/postfix/main.cf
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
[root@localhost ~]# vim /etc/postfix/access
192.168.4 REJECT
192.168.4.1 OK
[root@localhost ~]# postmap /etc/postfix/access //读取配置
根据客户机HELO 信息中的主机名地址过滤邮件
[root@localhost ~]# vim /etc/postfix/main.cf
smtpd_helo_required = yes //允许helo答复
smtpd_helo_restrictions = reject_invalid_hostname //拒绝无效主机
[root@localhost ~]# postfix reload //重新读取配置文件
根据发件人的地址过滤邮件
[root@localhost ~]# vim /etc/postfix/mail.cf
smtpd_sender_login_maps =
mysql:/etc/postfix/mysql_virtual_sender_maps.cf, //mysql中存在的用户
mysql:/etc/postfix/mysql_virtual_alias_maps.cf //mysql 中存在的用户别名
smtpd_sender_restrictions =
permit_mynetworks, //允许本机发送邮件
reject_sender_login-mismatch, //拒绝发送者在$smtpd_sender_owner_maps中所匹配的用户名和SASL登录名不一致的连接
reject_non_fqdn_sender, //拒绝发送者邮件的域不是FQDN格式的连接
reject_unknown_sender_domain, //拒绝发送者的域没有DNS的A记录或MX记录的连接
check_sender_access hash:/etc/postfix/sender_access
[root@localhost ~]# vim /etc/postfix/sender_access
marketing@ REJECT
[root@localhost ~]# postmap /etc/postfix/sender_access
根据收件人的地址过滤邮件
[root@localhost ~]# vim /etc/postfix/main.cf
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_non_fqdn_ recipient,
reject_unknown_recipient_domain
[root@localhost ~]# postfix restart
基于邮件内容的过滤
5.1安装并配置MailScanner 扫描调度工具
1) 安装MailScanner 扫描调度工具
[root@localhost ~]# tar -zxvf MailScanner-4.84.3-1.rpm.tar.gz
[root@localhost ~]# cd MailScanner-4.84.3-1
[root@localhost MailScanner-4.84.3-1]# ./install.sh
2) 修改配置文件MailScanner
[root@localhost ~]# vim /etc/MailScanner/MailScanner.conf
修改如下内容:
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA =postfix
Required SpamAssassin Score =7
High SpamAssassin Score = 10
Spam Actions = deliver header “X-Spam-Status: Yes”
High Soring Spam Actions = delete forward spam@extmail.org
3) 配置Postfix 支持调用MailScanner
[root@localhost ~]# vim /etc/postfix/main.cf
header_checks = regexp: /etc/postfix/header_checks
[root@localhost ~]# vim /etc/postfix/header_checks
加入下列内容:
/^Received:/HOLD
4) 调整邮件过滤队列的目录属主、属组,并启动MailScanner 服务程序
[root@localhost ~]# chown CR postfix.postfix /var/spool/MailScanner/incoming
[root@localhost ~]# chown CR postfix.postfix /var/spool/MailScanner/quarantine
[root@localhost ~]# service MailScanner start
[root@localhost ~]# chkconfig --level 35 MailScanner on
安装并配置SpamAssassin 垃圾邮件过滤器
1) 安装并配置SpamAssassin 垃圾邮件过滤器
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
[root@localhost ~]# cd /mnt/cdrom/Server
[root@localhost media]# rpm Civh spamassassin-3.2.5-1.e15.i386.rpm
2) 修改配置文件local.cf
(位于“/etc/mail/spamassassin/local.cf”,一般不需要进行任何修改,保持默认设置即可)
3) 启动SpamAssassin 服务
[root@localhost ~]# service spamassassin start
[root@localhost ~]# chkconfig Clevel 35 spamassassin on
安装并配置F-Port 病毒查杀软件
1) 安装F-Port 软件包安装过程中出现提示是按回车键接受默认设置
[root@localhost mail]# tar -zxvf fp-Linux-i686-ws.tar.gz CC /opt/
[root@localhost mail]# cd /opt/f-prot/
[root@localhost f-prot]# ./install-f-prot.pl
2) 升级F-Port 病毒库(服务器要能够访问Internet 互联网)
[root@localhost f-prot]# /opt/f-prot/fpupdate
[root@localhost f-prot]# crontab Ce (计划任务)
00 8 * * * /opt/f-prot/fpupdate
[root@localhost f-prot]# service crond start
[root@localhost f-prot]# chkconfig Clevel 35 crond on
邮件的收发测试:
用我新建立的用户给用户发送一封邮件
用户收到邮件:
如果输入的用户名不存在则拒绝发送。
具体根据自己的喜好来改变设置,来获得相应功能。
了这篇文章
类别:未分类┆阅读(0)┆评论(0)
13:14:26 18:01:59

我要回帖

更多关于 postfix邮件服务器 的文章

 

随机推荐