postfix之courier-authlib详解

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

配置文件:
        /etc/authmysqlrc
            提供通过mysql进行邮件账号认证的相关配置

/etc/ahutdaemonrc

0.安装相关依赖包:
        #yum -y install libtool-ltdl libtool-ltdl-devel expect perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel

libtool-ltdl包是一个动态模块加载器,有些程序依赖其加载某些模块,提供运行时环境。

expect包提供主机间通讯

1.编译安装:
        #tar xf courier-authlib-xxx.tar.bz2
        #cd coutier-authlib-xxx
        #./configure \
            --prefix=/usr/local/courier-authlib \
            --sysconfdir=/etc \
            --without-authpam \
            --without-authshadow \
            --without-authvchkpw \
            --without-authpgsql \
            --without-authsqlite \
            --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/includee
        #make
        #make install

编译相关选项:根据具体情况选择。
            --prefix=/usr/local/courier-authlib
            --sysconfdir=/etc
            --without-authpam 不支持基于pam认证
            --without-authshadow 不支持基于shadow认证
            --without-authvchkpw 不支持基于vchkpw认证
            --without-authpgsql 不支持基于pgsql认证
            --without-authsqlite 不支持基于sqlitle认证
            --with-authmysql 基于mysql认证
            --with-mysql-libs=/usr/lib/mysql 指定mysql库文件路径
            --with-mysql-includes=/usr/include/mysql 指定mysql头文件路径
            --with-redhat 对redhat系统进行自动优化,其他系统不要使用此选项。
            --with-authmysqlrc=/etc/authmysqlrc 指定mysqlrc配置文件位置
            --with-authdaemonrc=/etc/authdaemonrc 指定守护进程配置文件位置
            --with-mailuser=postfix 指定邮件收发管理用户
            --with-mailgroup=postfix  指定用户组
            --with-ltdl-lib=/usr/lib 指定ltdl库位置,需要libtool-ltdl和libtool-ltdl-devel包
            --with-ltdl-include=/usr/include 指定ltdl头文件位置。需要libtool-ltdl和libtool-ltdl-devel包
            --with-authdaemonvar=/var/spool/authdaemon 指定套接字socket文件位置。不指定默认在/usr/local/courier-authlib/var/spool/authdaemon下

2.复制sysv脚本:
        #cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
        #chmod 755 /etc/init.d/courier-authlib

3.编译smtpd.conf文件
        #vim /usr/lib/sasl2/smtpd.conf
            pwchech_menthod: authdaemond 密码验证方式改为通过cuorier-authlib的服务,不在使用cryus-sasl服务。
            mech_list: PLAIN LOGIN
            authdaemond_path= /usr/local/courier-authlib/var/spool/authdaemon/socket 指定服务进程位置,使用socket(套接字)方式。

4.设定socket文件夹权限及复制配置文件:
        #chmod 755 /usr/usr/local/courier-authlib/var/spool/authdaemon/
        #cp /etc/authdaemonrc.dist /etc/authdaemonrc
        #cp /etc/authmysqlrc.dist /etc/authmysqlrc

5.配置authmysqlrc文件和authdaemonrc
        #vim /etc/authdaemonrc
            authmodulelist="authmysql" 指定认证模块
            ahtumodulelistorig="authmysql" 指定认证原始模块模块
            daemons=10 默认启动进程个数
            authdaemonvar=/usr/local/courier-authlib/var/spool/atuhdaemon 指定socket文件位置。若编译是没指定可以在此修改,注意文件夹要提前创建好。
            DEBUG_LOGIN=0 是否启用调试。0表示不启用,1表示启用,2表示启用同时记录密码。

#vim /etc/authmysqlrc
            MYSQL_SERVER localhost mysql服务器的地址。localhost表示本机
            MYSQL_PORT 3306 mysql的监听地址
            MYSQL_USERNAME  extmail 指定连接mysql的账号。因为后边要用extman进行管理,extmail安装后默认用户为extmail。
            MYSQL_PASSWORD extmail 指定账号的密码      
            MYSQL_SOCKET  /var/lib/mysql/mysql.sock 指定mysql套接字位置。
            MYSQL_DATABASE  extmail 指定要使用的数据库
            MYSQL_USER_TABLE  mailbox 指定存放用户数据所在的表
            MYSQL_CRYPT_PWFIELD  password 指定用户密码字段
            MYSQL_UID_FIELD  ‘2525‘ 指定访问进程的uid,postfix的uid为2525。
            MYSQL_GID_FIELD  ‘2525‘ 指定访问进程的gid。
            MYSQL_LOGIN_FIELD  username 指定用户账号字段
            MYSQL_HOME_FIELD  concat(‘/var/mailbox/‘,homedir) 指定用户家目录的位置。虚拟用户是没有家目录,所以和邮箱目录保持一致。contcat()是mysql的函数,作用是将括号内的内容连接起来。
            MYSQL_NAME_FIELD  name 指定用户名称的字段
            MYSQL_MAILDIR_FIELD  concat(‘/var/mailbox/‘,maildir) 指定用户邮箱目录的位置。

6.配置main.cf让postfix支持虚拟域和虚拟用户:
        #vim /etc/postfix/main.cf
            ########################Virtual Mailbox Settings########################
            virtual_mailbox_base = /var/mailbox 指定用户邮件存放目录的路径
            virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 用户邮箱的映射表,通过mysql方式访问指定文件行查找。该文件是查询语句的集合。
            virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf 虚拟域映射表,该文件由extman提供。
            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 指定另一个投递代理MDA

##########################QUOTA Settings######################## 配额相关
            message_size_limit = 14336000 邮件大小显示
            virtual_mailbox_limit = 20971520 邮箱大小限制

7.创建邮箱目录及修改SMTP验证
        #mkdir -p /var/mailbox
        #chmod -R postfix /var/mailbox
        #vim /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

8.使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
        # tar xf extman-xxx.tar.gz
        # cd extman-xxx/docs
        # mysql -u root -p < extmail.sql sql脚本(xxx.sql)可以使用 mysql < xxx.sql 输入重定向的方式执行。
        # mysql -u root -p < init.sql

#mysql -uroot -p
        mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY ‘extmail‘; 创建extmail用户并授权,密码为extmail,生产环境中最好只给SELECT权限。
        mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY ‘extmail‘;
        mysql> FLUSH PRIVILEGES;

# cp mysql*  /etc/postfix/ 将指定的文件复制过去,若修改了账号、密码、库、表等信息,则要将这些文件中的密码的定义一并修改,保持一致。

注意:若导入sql脚本报错,是因为脚本内对引擎的定义由TYPE变为ENGINE,所使用的引擎也不一样,所以需要对脚本进行修改。
            #sed -i ‘[email protected][email protected][email protected]‘ extmail.sql

9.修改main.cf文件,注释相关条目以启用虚拟域
        #vim /etc/postfix/main.cf
            #myhostname = MAILSERVERNAME.DOMAIN
            #myorigin = $mydomain
            #mydomain = DOMAIN
            #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, ns.$mydomain 或者你可以改为自己所需的。
            mynetworks = 127.0.0.0/8 只允许为本地中继。

10.查看虚拟域,
        #mysql -uroot -p
        mysql> SHOW DATABASES;
        mysql> USE extmail; extmal数据库是通过sql脚本创建的。
        mysql> SHOW TABLES;
        mysql> SELECT * FROM domain\G 纵向显示domain表相关内容。此表中存放虚拟域相关的信息。
        
        后续可以通过extman添加虚拟域,比直接操作mysql方便。

11.配置dovecot支持虚拟域和虚拟用户
        #vim /etc/dovecot.conf
            mail_location = maildir:/var/mailbox/%d/%n/Maildir 设定邮件的位置,%d表示域名,%n表示用户名。均为dovecot的自定义宏。
            auth default {
                mechanisms = plain 认证机制使用plain
                passdb sql { 使用sql方式认证
                    args = /etc/dovecot-mysql.conf 指定查询文件
                }
                userdb sql { 使用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,mysql的socket默认在/tmp下,则host=/tmp/mysql.sock

#systemctl restart dovecot

时间: 2024-08-08 05:39:06

postfix之courier-authlib详解的相关文章

postfix 邮件服务器搭建详解

常见的邮件服务器: Sendmail .Qmail .postfix .Zmaile Exchange  . Notes/Domino Coremail  .U-mail zmailer: 新出的邮件服务器.整合前面的邮件 COREMAIL:最早网易使用的工具 Nores/Domino IBM 必须试用 IBM的硬件设备 U-mail : 收费的软件 postfix: 6版以后是默认安装 红帽中免费开源的邮件服务器 邮件系统角色: MUA(邮件用户代理) MTA (邮件传输代理) MDA (邮件

postfix之maildrop详解

maildrop 安装:        0.安装依赖库.头文件.库文件             # ln -sv /usr/local/courier-authlib/bin/courierauthconfig   /usr/bin             # ln -sv /usr/local/courier-authlib/include/*   /usr/include             # yum -y install pcre-devel 1.添加vmail用户和组,id大于10

【转】Linux 下搭建Postfix邮件服务器详解:

在我自己的服务器上面搭建了邮件服务器,为的是接下来写shell脚本进行报警监控.当服务器发生意外,可以及时发送邮件服务器到邮箱. 看了两个教程,按照两个教程来搭建的,感谢原作. Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3.修改DNS正解文件,使DNS能够解析邮箱服务 添加下面两行 mail.zhubf.com. IN A           

postfix之postfix详解

postfix: 日志:        /var/log/maillog 邮件别名:        将发给a的邮件发给b.        /etc/aliases  别名文件.postfix无法识别.            格式:                [email protected]:[email protected] /etc/aliases.db 由hash生成的别名文件数据库.postfix读取速度快. #newaliases [OPTION] 创建别名数据库.将aliases

postfix 邮件服务的安装及详解

sendmail:性能好,设置复杂,适合老手 qmail:体积小260+k ,模块化.需要做二次开发,适合对邮件性能有要求的 postfix:前身是sendmail,postfix原本是sendmail里面的一个模块,红帽6默认安装好postfix zmailer:近几年才出来的邮件 coremail:国内做的最好的商业平台,运行在linux上 Pop:允许客户端下载邮件,移动标记已读等操作  不会反馈到服务器. Imap4:双向通讯,客户端的操作会反馈到服务器,提供想更过的功能,听歌更好的邮件

CentOS 默认基本服务详解

1.使用chkconfig --list来查看安装的服务,比如我这里最小化安装后的一些服务 [[email protected] ~]# chkconfig --list auditd          0:off   1:off  2:on    3:on    4:on   5:on    6:off crond           0:off   1:off  2:on    3:on    4:on   5:on    6:off ip6tables       0:off  1:off

linux查看端口及端口详解

今天现场查看了TCP端口的占用情况,如下图 红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示两台机器正在通信.      之后查找  ncube-lm  发现ncube-lm是一个端口,是nCube License Manager (即ncube管理的一个许可证明),意思是被允许,被认证开放的意思,,, 之后查看端口号 是1

iOS回顾笔记(04) -- UIScrollView的基本使用详解

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

nginx:2、ngnix安装及配置详解

大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配置Nginx提供状态页面 九.配置Nginx的错误页面 十.配置Nginx打开目录浏览功能 十一.配置Nginx基于ssl提供https服务 一.前言 在上一篇博文中我们讲解了I/O模型.Web服务器的工作原理及Nginx的基本特性,我们知道Nginx有两个基本功能,一个是作为Web服务器(在这篇博

CentOS7/RHEL7 systemd详解

CentOS7/RHEL7 systemd详解 目录1. 为什么是systemd(1) 关于Linux服务管理(2) SysV init的优缺点(3) UpStart的改进(4) systemd的诞生(5)为什么systemd能做到启动很快2. SysV init介绍(1) 什么是SystemV(2)SysV init的运行级别(3)SysV init运行顺序(4)SysV init和系统关闭(5)SysV init的管理和控制功能3. systemd的特性(1)systemd解决了那些问题?(