构建POSTFIX邮件服务器(四)配置POSTFIX支持虚拟用户

  • 格式:pdf
  • 大小:101.73 KB
  • 文档页数:8

构建postfix邮件服务器(四)配置postfix支持虚拟用户2010年3月17日稀饭发表评论阅读评论一、准备1.从中下载extman-1.1.tar.gz2.从/projects/courier/files/下载courier-authlib使用Courier-authlib软件的目的是因为saslauthd程序不支持数据库认证,而Courier-authlib支持多种数据库认证3.检查postfix是否支持虚拟用户postconf–m|grep msyql如果出现mysql表示支持二、建立虚拟用户数据库1启动mysqlservice mysqld restart(要想使用此方法启动,必须将mysqld添加为系统服务,见构建postfix邮件服务器(一))2.解压extmantar zxvf extman-1.1.tar.gz3.导入extman软件包中的数据库脚本cd extman-1.1/docsmysql-u root-p123456<extmail.sqlmysql-u root-p123456<init.sql-p后面接的是mysql的密码(要想直接使用mysql就要输入export PATH=$PATH:/usr/local/mysql/bin)extmail.sql脚本进行的操作:主要针对邮件域localhost进行初始化创建extmail库,及该库中的一些表创建用户extmail@localhost,密码为extmail对数据库extmail中的表拥有“SELECT”、“UPDATE”的权限创建用户webman@localhost,密码为extman对数据库extmail中的表拥有“SELECT”、“INSERT”、“DELETE”、“UPDATE”权限init.sql脚本进行的操作:主要是建立了一个新的测试邮件域添加虚拟邮件域的记录,作为该邮件域的管理帐户创建用户root@,密码为extmail*123*创建用户postmaster@,密码为extmail作为该邮件域内的基本邮件用户三、配置虚拟用户支持postfix1、修改main.cf文件Vi/etc/ostfix/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服务器可以接收的虚拟邮件域的域名,作用类似于配置参数“mydestination”virtual_uid_maps=static:1000\\设置所有虚拟用户映射的本地用户的UIDvirtual_gid_maps=static:1000\\设置所有虚拟用户映射的本地用户的GID2.建立虚拟用户映射表文件方法:复制extman软件包中docs子目录下的样例文件mysql_virtual_alias_maps.cf mysql_virtual_mailbox_maps.cf mysql_virtual_domains_maps.cfcd extman-0.2.5/docscp mysql_virtual_*/etc/postfix/四、为虚拟用户设置SMTP发信认证1.解压coutier-authlib-0.63.0tar jxvf courier-authlib-0.63.0.tar.bz22.预配置./configure–prefix=/usr/local/courier-authlib\\\安装的位置>–without-stdheaderdir\\\将头文件安装到一个不是默认的头文件搜索路径的目录中>–with-authmysql\\\配置支持MYSQ数据库查询>–with-redhat\>–with-mysql-libs=/usr/local/mysql/lib/mysql\\\mysql的库文件路径>–with-mysql-includes=/usr/local/mysql/include/mysql\\msyql的头文件路径3.编译,安装make;make install4.生成authmysqlrc和authdaemonrc两个文件命令make install-configureauthdaemonrc:主配置,设置使用的认证方式authmysqlrc:数据库配置,设置连接地址、查询方式等5.将courier-authlib的库文件路径添加到系统的搜索路径中去1)vi/etc/ld.so.conf/usr/local/courier-authlib/lib/courier-authlib2)更新Ldconfig6.修改authdaemonrc主配置文件,仅保留authmysql认证方式,去掉其他1)进入目录cd/usr/local/courier-authlib/etc/authlib/2)备份cp authdaemonrc authdaemonrc.bak3)保留authmysql认证方式①vi authdaemonrc②删掉所有内容1000dd③添加如下两行authmodulelist=”authmysql”authmodulelistorig=”authmysql”7.修改authmysqlrc文件,用于描述如何向mysql数据库查询信息1)cd/usr/local/courier-authlib/etc/authlib/2)备份cp authmysqlrc authmysqlrc.bak3)vi authmysqlrc修改MYSQL_SERVER localhost\\msyql数据库服务器位置MYSQL_USERNAME extmail\\数据库管理员账号MYSQL_PASSWORD extmail\\数据库管理员账户密码MYSQL_SOCKET/tmp/mysql.sock\\mysql.sock文件位置MYSQL_DATABASE extmail\\虚拟用户数据库MYSQL_USER_TABLE mailbox\\重mailbox表中获得账户的信息MYSQL_CRYPT_PWFIELD password\\从pssword字段获得帐户密码MYSQL_UID_FIELD uidnumber\\从uidnumber字段获得映射的本地用户UID MYSQL_GID_FIELD gidnumber\\从gidnumber字段获得映射的本地组GIDMYSQL_LOGIN_FIELD username\\从username字段获得帐户名称(带@后缀)MYSQL_HOME_FIELD concat(‘/mailbox/’,homedir)\\合并出用户的宿主目录完整路径MYSQL_NAME_FIELD name\\从name字段获得帐户名称(不带@后缀)MYSQL_MAILDIR_FIELD concat(‘/mailbox/’,maildir)\\合并出用户的完整邮件存储路径8.回到源码目录,复制脚本,并启动courier-authlib服务cd/postfix-an/courier-authlib-0.63.0\\回到源码目录cp courier-authlib.sysvinit/etc/init.d/courier-authlib\\复制脚本到chmod755/etc/init.d/courier-authlib\\给权限chkconfig–level35courier-authlib on\\在35基本,开机启动service courier-authlib start\\启动courier-authlib9.修改cyrus sasl设置vi/usr/lib/sasl2/smtpd.confpwcheck_method:authdaemondauthdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket10.修改目录的权限,否则postfix无法获得用户名和密码chmod–R755/usr/local/courier-authlib/var/spool/authdaemon/五、修改Dovecot的配置Vi/etc/dovecot.conf1.查找mail_location把它修改为mail_location=maildir:/mailbox/%d/%n/Maildir2.查找mechanisms=plain在下面添加以下内容passdb sql{args=/etc/dovecot-mysql.conf}userdb sql{args=/etc/dovecot-mysql.conf}4.建立数据查询配置文件Vi/etc/dovecot-mysql.conf\\建立文件,添加如下内容driver=mysqlconnect=host=localhost dbname=extmail user=extmail password=extmaildefault_pass_scheme=CRYPT\\msyql数据库中存储的密码串的加密算法password_query=SELECT username AS user,password AS password FROM mailbox WHERE username=‘%u’\\用于查询用户密码的SQL语句user_query=SELECT maildir,uidnumber AS uid,gidnumber AS gid FROM mailbox WHERE username=‘%u’\\用于查询用户的SQL语句上述配置可参考样例文件”etc/dovecot-sql.conf”5.建立虚拟用户的邮箱根目录“/mailbox”1)mkdir-p/mailbox//postmaster/Maildir/-p表示连接新建目录/mailbox是邮箱存储空间的顶层目录,必须创建/mailbox/目录对应虚拟邮件域/mailbox//postmaster目录对应邮件用户postmaster@/mailbox//postmaster/Maildir目录对应该用户的邮箱存储空间2)chown-R postfix:postfix/mailbox6.重启dovecot/usr/local/sbin/dovecot-c/etc/dovecot.conf六、测试虚拟用户1.使用authtest验证数据库查询,用于测试的邮箱账号用户:postmaster@,密码:extmail 1)命令/usr/local/courier-authlib/sbin/authtest-s login postmaster@ extmail2)如果出现“Authentication succeeded”表示成功2.测试对虚拟用户的smtp发信认证出现235Authentication Successful表示成功1)首先获得虚拟用户postmaster@的用户名和密码的BASE64编码字符串①#perl-e‘use MIME::Base64;print encode_base64(“postmaster\@”)’得到cG9zdG1hc3RlckBleHRtYWlsLm9yZw==②perl-e‘use MIME::Base64;print encode_base64(“extmail”)’得到ZXh0bWFpbA==或者用命令printf“用户名或密码”|openssl base64。