烂泥:Postfix邮件服务器搭建之虚拟用户配置
virtual_gid_maps = static:
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
注意:postfix主配置文件中,需要注意的地方我已经标注出来了,其中还需要说明的是我们在此启用的虚拟用户是《烂泥:Postfix邮件服务器搭建之准备工作》中创建的vmail用户,该用户的id是5000,所以在postfix主配置文件会看到vmail的家目录/home/vmail/,以及vmail的id信息5000。
在以下所有的操作中,如果有vmail相关的信息,这个都是和该用户进行关联的。
1.2 修改master.cf文件
在master.cf文件添加如下代码:
vim /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
1.3 数据库连接相关文件
连接数据库相关文件有7个,在创建配置文件之前,我们要在/etc/postfix/目录下建立sql目录用来存放这些配置如下:
mkdir /etc/postfix/sql/
现在我们来创建这些配置文件,注意这些配置文件中,有关数据库的部分都是《烂泥:Postfix邮件服务器搭建之准备工作》中的用户名、密码和数据库。如下:
vim /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
vim /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
vim /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
vim /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
vim /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u','@',alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
vim /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
1.4 测试sasl与postfix集成
以上配置完毕后,现在我们来测试postfix是否已经正确与cyrus-sasl进行集成,使用如下命令:
telnet mail.ilanni.com 25
ehlo ilanni.com
注意:图中的ehlo ilanni.com命令,该命令需要手工输入,而如果出现250-AUTH PLAIN LOGIN和250-AUTH=PLAIN LOGIN两行,则说明postfix已经正确启用smtp认证。
二、dovecot虚拟用户配置
dovecot配置文件比较多,下面我们一一介绍。
2.1 修改dovecot.conf文件
vim /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *
!include conf.d/*.conf
passdb {
driver = sql
args = AS uid, AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'
三、postfixadmin配置
dovecot配置完毕后,我们现在来配置postfixadmin,postfixadmin需要lamp的支持。有关lamp的安装,可以查看《烂泥:Postfix邮件服务器搭建之准备工作》。
3.1 安装postfixadmin
postfixadmin不能通过yum方式进行安装,我们需要去下载postfixadmin软件包,如下:
tar -xf postfixadmin-2.93.tar.gz
mv postfixadmin-2.93 /var/www/html/postfixadmin
chown -R apache:apache /var/www/html/postfixadmin
chmod -R 755 /var/www/html/postfixadmin
3.2 配置postfixadmin
postfixadmin安装完毕后,我们现在来配置postfixadmin。postfixadmin的配置文件是config.inc.php,我们只需修改这个文件即可。如下:
vim /var/www/html/postfixadmin/config.inc.php
$CONF['configured'] = true;
$CONF['default_language'] = 'cn';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix';
$CONF['database_name'] = 'postfix';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '1000';
$CONF['mailboxes'] = '1000';
$CONF['maxquota'] = '1000';
$CONF['fetchmail'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';
3.3 启动postfixadmin
postfixadmin配置完毕后,我们现在来启动postfixadmin。
Postfixadmin不是一个单独的程序,它是依赖于apache的,所以我们只需要启动apache即可。如下:
/etc/init.d/httpd start
chkconfig httpd on
现在我们在浏览器中打开如下连接:
http://mail.ilanni.com/postfixadmin/setup.php
通过上图,我们可以很明显的看出postfixadmin已经正常启动,而且其所依赖的各个组件也已经正常安装和配置。
3.4 修改默认后台管理密码
在postfixadmin的配置文件中有一个选项是填写管理员后台管理密码的,默认是changeme。如下:
现在我们来修改默认密码,如下:
通过上图,我们可以很明显的看出默认已经密码已经被我们成功的修改了。
修改完毕后,我们复制该密码到postfixadmin的配置文件,将原来的changeme替换成功现在的加密后的密码即可。如下:
vim /var/www/html/postfixadmin/config.inc.php
3.5 添加管理员账户
后台管理密码修改完毕后,我们现在来添加一个管理员账号admin@ilanni.com。如下:
通过上图,我们可以很明显的看出管理员admin@ilanni.com已经添加成功。
现在我们来使用这个管理员登录看看后台,后台登录地址为http://mail.ilanni.com/postfixadmin/login.php
如下:
通过上图,我们可以很明显的看出新添加的管理员已经可以登录postfixadmin管理后台了。
postfixadmin管理员登录地址是:
http://mail.haiyn.com/postfixadmin/login.php
postfixadmin 普通用户登录地址是:
http://mail.ilanni.com/postfixadmin/users/login.php
四、添加postfix虚拟域
postfixadmin是支持多域名管理的,在此我们先添加一个域名ilanni.com。如下:
通过上图,我们可以很明显的看出ilanni.com这个域名已经添加成功。
五、添加邮箱用户
ilanni.com这个域名添加完毕后,我们现在来给这个域名添加新的邮件用户。如下:
通过上图,我们可以很明显的看出ilannimail@ilanni.com,这个邮件用户已经被成功创建。
六、使用邮件客户端测试
ilannimail@ilanni.com邮件用户被添加后,我们现在来使用邮件客户端测试是否可以正常发送和收取邮件。
6.1 连接邮件服务器测试
首先我们先来测试该用户是否可以正常连接邮件服务器,如下:
通过上图,我们可以很明显的看出邮件用户ilannimail已经正常连接postfix邮件服务器。
6.2 测试发送邮件功能
现在我们来测试发送邮件功能,如下:
通过上图,我们可以很明显的看出ilaninmail用户已经成功的向外域邮箱发送邮件。
6.3 测试收取邮件功能
现在我们来测试收取邮件功能,如下:
通过上图,我们可以很明显的看出ilaninmail用户已经成功的向收取外域邮箱发送过来的邮件。
七、查看postfixadmin数据库
现在我们来查看下postfixadmin数据库postfix中的数据,如下:
这个是postfix数据库postfixadmin所生成的表。
admin表中存储的是管理员用户。
alias表中存储的是所有的邮件用户。
domain表中存储的是虚拟域名。
八、查看postfix对系统产生的影响
本篇文章我们主要是针对postfix虚拟用户,进行操作的。现在我们虚拟域名已经添加,邮件用户也已经创建。
那么我们现在来查看下,我们的这些操作在系统上产生了哪些影响。
8.1 查看邮件用户家目录
切换到vmail用户的家目录,如下:
ll /home/vmail/
通过上图,我们可以很明显的看出ilanni.com这个虚拟域名在vmail用户的家目录下产生了ilanni.com这个目录。
现在我们再来看看ilanni.com这个目录下都有哪些文件,如下:
ll /home/vmail/ilanni.com/
通过上图,我们可以很明显的看出在ilanni.com这个虚目录下产生了ilannimail和wxy这两个目录,而这两个目录名称刚好对应我们前面创建的邮件用户ilannimail和wxy。
这样看起来就刚刚好和我们前面解释的postfix虚拟用户原理相照应了。
8.2 查看邮件用户个数
我们现在查看ilannimail目录下文件,如下:
ll /home/vmail/ilanni.com/ilannimail/Maildir/
通过上图,我们可以很明显的看出该目录下面文件不多,现在我们主要关注cur目录。因为通过该目录下的文件个数,可以知道ilannimail用户有多少封邮件。以下两张截图,就可以证明这个说法。如下:
cd /home/vmail/ilanni.com/ilannimail/Maildir/cur
可以看到cur目录下有三个文件。
通过foxmail客户端也可以看到ilanimail用户确实只有三封邮件,这就证明了,我们前面的猜测是正确的。知道cur目录下的文件个数,可以知道ilannimail用户有多少封邮件。
8.3 查看文件对应邮件
由cur目录下的文件个数可知目前ilannimail有三封邮件,那么这三个文件分别对应哪三封邮件呢?
其实我们可以根据文件的名称中的unix时间戳来定位,现在我们以1457768362.M305033P28093.iZ23r061d7kZ,S=4526,W=4615:2,RS文件为例。
通过文件名,我们可以知道该文件的unix时间戳是1457768362,那么可以查找这个unix时间戳对应的实际时间,如下:
通过上图,可以知晓是15:39:22这封邮件。
当然我们也可以查看这个文件的内容,如下:
cat 1457768362.M305033P28093.iZ23r061d7kZ,S=4526,W=4615:2,RS
烂泥:Postfix邮件服务器搭建之虚拟用户配置的更多相关文章
- 烂泥:Postfix邮件服务器搭建之软件安装与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postf ...
- 烂泥:Postfix邮件服务器搭建之准备工作
说实话,Postfix邮件服务器的搭建是一件很麻烦的事情,需要各种软件之间的配置和调试.在写这篇文章之前,我也是搭建测试了不下于10次才算把整个流程给走通,今天刚好有时间把整个搭建过程记录下来. 在正 ...
- postfix邮件服务器搭建01-准备篇
本系列文章主要介绍linux下主流的开源邮件系统postfix的搭建过程,构建一个通过postfix虚拟用户管理的完整的邮件系统, 该系统包括以下组件: 邮件收发端postfix,dovecot, 邮 ...
- Postfix邮件服务器搭建及配置
一.邮件服务器(Mail Server)的传输协议 1.简单邮件传输协议(SMTP):Simple Mail Transger Protocol 2.扩展的简单邮件传输协议(ESMTP):Extend ...
- Postfix 邮件服务器搭建
搭建服务环境: Centos 6 配置域名hosts: mail.demonC6.com 1.清理系统自带的邮件软件 # rpm -qa | grep sendmail* # rpm -e sendm ...
- postfix邮件服务器搭建03-webmail安装篇
本文接着上文的安装进行,介绍另一个WebMail功能更加人性化的roundcube.当然也可以对已有的postfix邮件系统进行功能完善 1.下载安装roundcube cd /server/tool ...
- postfix邮件服务器搭建02-安装篇
本文接着上文的环境,进行postfix邮件发信端和dovecot邮件收信端的部署,之后部署基于浏览器的extmail图形管理端,使管理员可以通过网页对邮件虚拟用户进行管理,对邮件服务器进行管控 1.p ...
- postfix邮件服务器搭建04-终结篇
本来是计划对postfix做一个全系列的安装文档的,不过在查某个知识点的时候,偶然找到一个已经写好的postfix全系列文章,在全部看完之后惊为天人,我认为:总体上会比我要写的要好,所以我准备借用一下 ...
- CentOS6.4下邮件服务器搭建
CentOS6.4下邮件服务器搭建 linux下邮件服务器的搭建大致分为三个步骤 准备工作(真实的生产环境下需要) 发送服务器安装及配置 (Postfix) 接收服务器安装及配置(dovecot) ...
随机推荐
- Nodejs之MEAN栈开发(四)---- form验证及图片上传
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...
- 解决java代码测试http协议505错误
代码功能:通过java代码获取网页源代码: 所用工具:Myclipse8.5+tomcat6.0+浏览器 系统环境:windows xp旗舰版 火狐浏览器版本: IE浏览器版本: 测试http协议有错 ...
- null和undefined的一些区别
读了阮一峰的博客,自己总结一下,便记录一篇博客 在javacript的基本类型中,有2种基本类型,只有1个值,便是null和undefined,都表示的是"无".在一定程度上是相等 ...
- QT5.1 调用https
以VS开发为例.因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com ...
- .net源码分析 – List<T>
通过分析源码可以更好理解List<T>的工作方式,帮助我们写出更稳定的代码. List<T>源码地址: https://github.com/dotnet/corefx/blo ...
- LA4287--tarjan
题目大意: 在数学中,我们常常需要完成若干个命题的等价性证明.比如,有4个命题a,b,c,d,我们证明a↔b,然后b↔c,最后c↔d.注意每次证明都是双向的,因此一共完成了6次推导.另一种方法是a→b ...
- EC笔记:第二部分:12、复制对象时勿忘其每一个成分
EC笔记:第二部分:12.复制对象时勿忘其每一个成分 1.场景 某些时候,我们不想使用编译器提供的默认拷贝函数(包括拷贝构造函数和赋值运算符),考虑以下类定义: 代码1: class Point{ p ...
- ABP使用及框架解析系列 - [Unit of Work part.1-概念及使用]
前言 ABP ABP是“ASP.NET Boilerplate Project”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开 ...
- Lind.DDD.Manage项目核心技术分享
回到目录 关于Lind.DDD.Manager的培训与学习 讲解:张占岭 花名:仓储大叔 主要框架:Lind.DDD,Lind.DDD.Manager 关于Lind.DDD.Manager 由于数据模 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...