邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)

要受使用Mutt必须安装一个收邮件的代理,例如dovecot,配置完成之后启动服务,

Mutt用户的邮件代理

mutt -f 指定用户的邮箱,路径,一般指定对应的协议即可访问,

mutt用户的界面如下所示,是纯文本界面

具体的使用如下所示

#mutt -f pop://[email protected]

出现如下所示的界面,输入对应的密码

登陆以后出现一个界面

根据提示可以进行简单的查看以及收发删除邮件的操作,是一个很方便使用的纯文本的邮件收发系统

虚拟主机,虚拟域

1.web服务器中虚拟主机:

中心主机一个服务器只能实现一个站点,但是使用虚拟主机后可以实现多个虚拟主机,登陆多个虚拟用户,更好地利用了资源以及节省成本

邮件服务器,基于自己的域名建立,

物理服务器即为定义了邮件中心域的服务器,为了实现虚拟用户,需要取消mydestination ,要在mydomain中添加多个域名,在查找表中查找到相应文件,post_map较为复杂,因此我们采用mysql的方法,将用户的账号密码,以及负责收发邮件的域的账号以及密码放入到mysql数据中的某一表中,然后使用php的 方法实现调用 ,直接开发一个php的程序,直接在php的页面中进行创建删除等操作,并且添加用户等操作也可以直接通过后台,实现用户的在线注册。

虚拟域:

用户别名

用户账号:以前的账号是使用useradd建立的账号,但是这样的方法建立的账号使得别人不仅能够使用邮件法务,而是能够访问更加多的其他的系统的访问,不能够保证安全,保存在非/etc/passwd,增大系统安全性,这样的账号即为虚拟用户,只为一个域实现收发邮件的功能。

由下面一张来自于互联网的图来进行解释

如上图所示

完成一个基于虚拟用户的虚拟域邮件系统,并且要拥有认证的功能,还要进行以下组件的安装以及配置

1.courier-authlib的安装以及配置过程

1、courier简介

courier-authlib是Courier组件中的认证库,它是courier组件中一个独立的子项目,用于为Courier的其它组件提供认证服务。其认证功能通常包括验正登录时的帐号和密码、获取一个帐号相关的家目录或邮件目录等信息、改变帐号的密码等。而其认证的实现方式也包括基于PAM通过/etc/passwd和/etc/shadow进行认证,基于GDBM或DB进行认证,基于LDAP/MySQL/PostgreSQL进行认证等。因此,courier-authlib也常用来与courier之外的其它邮件组件(如postfix)整合为其提供认证服务。

备注:在RHEL5上要使用0.64.0及之前的版本,否则,可能会由于sqlite版本过低问题导致configure检查无法通过或编译无法进行。

2、安装

接下来开始编译安装

# tar jxvf courier-authlib-0.64.0.tar.bz2

# cd courier-authlib-0.64.0

#./configure \

--prefix=/usr/local/courier-authlib \

--sysconfdir=/etc \

--without-authpam \

--without-authshadow \

--without-authvchkpw \

--without-authpgsql \

--with-authmysql \

--with-mysql-libs=/usr/lib/mysql \

--with-mysql-includes=/usr/include/mysql \

--with-redhat \

--with-authmysqlrc=/etc/authmysqlrc \

--with-authdaemonrc=/etc/authdaemonrc \

--with-mailuser=postfix \

--with-mailgroup=postfix \

--with-ltdl-lib=/usr/lib \

--with-ltdl-include=/usr/include

# make

# make install

备注:可以使用--with-authdaemonvar=/var/spool/authdaemon选项来指定进程套按字目录路径。

# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon

# cp /etc/authdaemonrc.dist  /etc/authdaemonrc

# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

修改/etc/authdaemonrc 文件

authmodulelist="authmysql"

authmodulelistorig="authmysql"

daemons=10

3、配置其通过mysql进行邮件帐号认证

编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。

MYSQL_SERVER localhost

MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)

MYSQL_USERNAME  extmail      (这时为后文要用的数据库的所有者的用户名)

MYSQL_PASSWORD extmail        (密码)

MYSQL_SOCKET  /var/lib/mysql/mysql.sock

MYSQL_DATABASE  extmail

MYSQL_USER_TABLE  mailbox

MYSQL_CRYPT_PWFIELD  password

MYSQL_UID_FIELD  ‘2525‘

MYSQL_GID_FIELD  ‘2525‘

MYSQL_LOGIN_FIELD  username

MYSQL_HOME_FIELD  concat(‘/var/mailbox/‘,homedir)

MYSQL_NAME_FIELD  name

MYSQL_MAILDIR_FIELD  concat(‘/var/mailbox/‘,maildir)

4、提供SysV服务脚本

# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib

# chmod 755 /etc/init.d/courier-authlib

# chkconfig --add courier-authlib

# chkconfig --level 2345 courier-authlib on

# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf

# ldconfig -v

# service courier-authlib start   (启动服务)

5、配置postfix和courier-authlib

新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:

#mkdir –pv /var/mailbox

#chown –R postfix /var/mailbox

接下来重新配置SMTP 认证,编辑 /usr/lib/sasl2/smtpd.conf ,确保其为以下内容:

pwcheck_method: authdaemond

log_level: 3

mech_list:PLAIN LOGIN

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

2.让postfix支持虚拟域和虚拟用户

1、编辑/etc/postfix/main.cf,添加如下内容:

########################Virtual Mailbox Settings########################

virtual_mailbox_base = /var/mailbox

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_domains =

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_uid_maps = static:2525

virtual_gid_maps = static:2525

virtual_transport = virtual

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

##########################QUOTA Settings########################

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user‘s maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.

virtual_overquota_bounce = yes

2、使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:

# tar zxvf  extman-1.1.tar.gz

# cd extman-1.1/docs

# mysql -u root -p < extmail.sql

# mysql -u root -p <init.sql

# cp mysql*  /etc/postfix/

3、授予用户extmail访问extmail数据库的权限

mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY ‘extmail‘;

mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY ‘extmail‘;

说明:

1、启用虚拟域以后,需要取消中心域,即注释掉myhostname, mydestination, mydomain, myorigin几个指令;当然,你也可以把mydestionation的值改为你自己需要的。

2、对于MySQL-5.1以后版本,其中的服务脚本extmail.sql执行会有语法错误;可先使用如下命令修改extmail.sql配置文件,而后再执行。修改方法如下:

# sed -i ‘[email protected][email protected][email protected]‘ extmail.sql

三.配置dovecot

# vi /etc/dovecot.conf

mail_location = maildir:/var/mailbox/%d/%n/Maildir

……

auth default {

mechanisms = plain

passdb sql {

args = /etc/dovecot-mysql.conf

}

userdb sql {

args = /etc/dovecot-mysql.conf

}

……

# 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‘

说明:如果mysql服务器是本地主机,即host=localhost时,如果mysql.sock文件不是默认的/var/lib/mysql/mysql.sock,可以使用host=“sock文件的路径”来指定新位置;例如,使用通用二进制格式安装的MySQL,其soc文件位置为/tmp/mysql.sock,相应地,connect应按如下方式定义。

connect = host=/tmp/mysql.sock dbname=extmail user=extmail password=extmail

接下来启动dovecot服务:

# service dovecot start

# chkconfig dovecot on

需要完成一个拥有认证功能的邮件系统,还需要安装extman,配置maildrop,以及安装clamav等组件,下一篇将完成这些的安装以及配置,实现一个邮件系统的构建。

时间: 2024-08-08 03:38:49

邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)的相关文章

邮件服务系列之五安装Extman,maildrop以及clamav-0.97.7的安装

前面我们已经完成了基础的邮件系统所需的组建的安装以及配置,下面我们进行Extman-1.1,maildrop以及clamav-0.97.7的安装以及配置,来完成整个邮件服务系统的搭建. 一.安装Extman-1.1 1.安装及基本配置 # tar zxvf  extman-1.1.tar.gz # mv extman-1.1 /var/www/extsuite/extman 修改配置文件以符合本例的需要: # cp /var/www/extsuite/extman/webman.cf.defau

邮件服务系列之三实现postfix+dovecot+sasl

MRA :cyrus-imap,dovecot dovecot 依赖MySQL客户端 pop3协议监听tcp110 imap4协议监听tcp143端口 以明文方式工作需结合sasl来实现邮件传输加密 dovecot支持四种协议: pop3 imap4 pop3s imaps 配置文件位于:/etc/dovecot.conf 带有sasl认证能力 支持两种邮箱格式: mbox一个文件存储所有邮件 maildir:一个文件存储一封邮件,所有邮件存储在一个目录中 安装: yum install dov

邮件服务系列之一基础原理

Mail Server: SMTP:Simple Mail Transfer Protocol 简单邮件传输协议 ESMTP :Extend Simple Mail Transfer Protocol POP3:Post Office Protocol邮局协议版本3 IMAP4:Internet Mail Access Protocol交互式邮件存取协议 邮件系统的工作: 互联网诞生不久出现了UUCP:Unix to Unix Copy unix主机之间复制文件的协议,指定源主机以及目标主机,这

邮件服务(三):实践服务器搭建

背景 邮件服务系列博文中,前两篇介绍了邮件系统的基本功能和安全体系,本文记录了搭建邮箱服务器的实践. Sendmail 是一种多用途.支援多种协定的跨网络电子邮件传送代理软件,于 1983 年随着 BSD 4.1c 首次发行,2001 年时的调查,互联网上的邮件服务器有 42%使用 Sendmail,但之后由于多次被发现重大的安全性漏洞,且其设定档过于复杂造成较高的学习门槛等因素,导致市占率下滑. Postfix 被 Wietse Zweitze Venema 创造出来以取代 Sendmail.

基于虚拟用户的邮件系统配置

基于虚拟用户的邮件系统配置 实验说明: 操作系统:redhat5.8_x64bit 由postfix+ sasl + courier-authlib + MySQL(实现了虚拟用户.虚拟域) + dovecot + Webmail {extmail(extmain)} 组成的虚拟用户. 需要准备以下软件包: postfix-2.9.6.tar.gz courier-authlib-0.64.0.tar.bz2 extmail-1.2.tar.gz extman-1.1.tar.gz Unix-S

vsftpd基于pam_mysql的虚拟用户机制

一.虚拟用户概述 vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户.系统用户.虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文件资源都有各自的权限,只有操作系统上的用户才能根据权限模型判断是否能够访问该文件资源.这里仅介绍vsftpd基于pam_mysql的虚拟用户机制的使用. 二.vsftpd基于pam_mysql的虚拟用户机制 1.编译安装pam_mysql (1) 编译pam_mysql前要提供开发环境,并安

FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

前言 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用,目前在开源操作系统中常用的FTP套件主要有proftpd.pureftp.ServU和wu-ftpd等.本文将讲解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB实现虚拟用户访问控制. 基础配置介绍 工作原理 状态响应码 1xx:信息码 2xx:成功状态码 3xx:进一步提示补全信息的状态码 4xx:客户端错误 5xx:服务器端错误 用户认证 虚拟用户:仅用于访问某特定服务中的资源

vsftpd的基于pam_mysql的虚拟用户配置示例 &nbsp; &nbsp; &nbsp;

第一步:安装vsftpd和mariadb ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块. 准备编译环境 安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x