分享
 
 
 

Postfix+Courier-IMAP+Cyrus-SASL+PAM_MySQL+MySQL安装

王朝mysql·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

基本思路:

courier-imap提供pop3服务,直接访问mysql

postfix的所有用户,别名和多域名支持均存储在mysql中

smtp auth使用了sasl,通过pam_mysql对mysql进行访问。

相关软件:

mysql-4.0.12.tar.gz

courier-imap-1.7.1.tar.bz2

cyrus-sasl-1.5.28.tar.gz

pam_mysql-0.5.tar.gz

postfix-2.0.6.tar.gz

安装MySQL,这个网上资料很多,如果有不清楚的,请去查文档。

#/usr/sbin/useradd mysql

#tar zvxf mysql-4.0.12.tar.gz

#cd mysql*

#./configure --prefix=/usr/local/mysql

#make

#make install

#scripts/mysql_install_db

#chown -R mysql.root /usr/local/mysql/var

#/usr/local/mysql/bin/mysqld_safe -u mysql &

#cd ..

好了,MySQL已经搞定了。

安装pam_mysql

#tar zvxf pam_mysql*gz

#cd pam_mysql*

将pam_mysql.c中第54行注释掉,/* #define DEBUG */

#make

#cp pam_mysql.so /lib/security

#cd ..

安装Cyrus-SASL

#tar zvxf cyrus-sasl*gz

#cd cyrus-sasl*

#./configure --disable-sample --disable-pwcheck --disable-cram --disable-digest --disable-krb4--disable-gssapi --disable-anon --enable-plain --enable-login

#make

#make install

#ln -s /usr/local/lib/sasl /usr/lib/sasl

#echo /usr/local/lib >> /etc/ld.so.conf

#echo /usr/local/lib/sasl >> /etc/ld.so.conf

#echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf

#/sbin/ldconfig

#echo pwcheck_method: pam > /usr/lib/sasl/smtpd.conf

#cd ..

安装Postfix

如果系统上有sendmail,请先将其停止,并备份sendmail的二进制文件和配置文件。

#tar zvxf postfix*gz

#cd postfix*

#/usr/sbin/groupadd postfix

#/usr/sbin/groupadd postdrop

#/usr/sbin/useradd -g postfix -d /dev/null -s /bin/false postfix

#make -f Makefile.init makefiles 'CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/local/mysql/include/mysql -I/usr/local/include' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -L/usr/local/lib/sasl -lmysqlclient -lsasl -lz -lm'

#make install

#cd ..

安装courier-imap

#tar jvxf courier-imap*bz2

#cd courier-imap*

#./configure --without-authpwd --without-authpam --without-authuserdb --without-authshadow--without-cram --without-chkpw --without-ldap --without-pgsql --without-authdaemon--without-authcustom --with-authmysql

#make

#make check

#make install

#make install-configure

#cd ..

创建数据库,表。表结构见下:

#/usr/local/mysql/bin/mysql

mysql>create database postfix;

mysql>exit;

#/usr/local/mysql/bin/mysql < /tmp/postfix.sql

#####cut from here#####(postfix.sql)

CREATE TABLE postfix_mailauth (

userid char(20) binary NOT NULL default '',

username char(60) NOT NULL default '',

domain char(50) NOT NULL default '',

uid smallint(5) unsigned NOT NULL default '12345',

gid smallint(5) unsigned NOT NULL default '12345',

clearpw char(20) binary NOT NULL default '',

home char(100) NOT NULL default '',

maildir char(150) NOT NULL default '',

quota char(100) NOT NULL default '',

last_access int(10) unsigned NOT NULL default '0',

status tinyint(3) unsigned NOT NULL default '1',

passwd_lastchanged int(10) unsigned NOT NULL default '0',

PRIMARY KEY (username),

KEY status (status)

) TYPE=MyISAM;

CREATE TABLE postfix_forward (

username varchar(50) NOT NULL default '',

domain varchar(40) NOT NULL default '',

forward_addr text NOT NULL,

PRIMARY KEY (username)

) TYPE=MyISAM;

CREATE TABLE postfix_transport (

domain varchar(50) NOT NULL default '',

transport varchar(8) NOT NULL default 'virtual:',

PRIMARY KEY (domain)

) TYPE=MyISAM;

#####cut end#####

其中的uid和gid的default值请设置为系统用户postfix的uid和gid

配置pam

在/etc/pam.d/下创建文件smtp,内容如下:

#####

auth sufficient pam_mysql.so user=your_userid passwd=your_password host=localhost db=postfix table=postfix_mailauth usercolumn=username passwdcolumn=clearpw crypt=0

account required pam_mysql.so user=your_userid passwd=your_password host=localhost db=postfix table=postfix_mailauth usercolumn=username passwdcolumn=clearpw crypt=0

auth sufficient pam_unix_auth.so

account sufficient pam_unix_acct.so

#####

编辑courier-imap配置文件/usr/lib/courier-imap/etc/authmysqlrc,设置访问mysql的一些参数,比较简单,参见注释就行。

编辑/etc/postfix/main.cf

一般的配置请参见文件内的注释,需要注意的是以下几处:

#####所有的帐号,别名均在数据库中

virtual_mailbox_domains = $mydomain, xxx.com,yyy.com

transport_maps = mysql:/etc/postfix/transport.cf

virtual_mailbox_base = /

virtual_uid_maps = mysql:/etc/postfix/uid.cf

virtual_gid_maps = mysql:/etc/postfix/gid.cf

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

virtual_maps = mysql:/etc/postfix/forward.cf

#####注意这里的最后的/不能丢

home_mailbox = Maildir/

#####SASL

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated permit_auth_destination reject

smtpd_sasl_security_options = noanonymous

smtpd_client_restrictions = permit_sasl_authenticated

broken_sasl_auth_clients = yes

#####uid.cf

user = your_userid

password = your_password

dbname = postfix

table = postfix_mailauth

select_field = uid

where_field = username

hosts = localhost

#####gid.cf

user = your_userid

password = your_password

dbname = postfix

table = postfix_mailauth

select_field = gid

where_field = username

hosts = localhost

#####transport.cf

user = your_userid

password = your_password

dbname = postfix

table = postfix_transport

select_field = transport

where_field = domain

hosts = localhost

#####forward.cf

user = your_userid

password = your_password

dbname = postfix

table = postfix_forward

select_field = forward_addr

where_field = username

hosts = localhost

#####users.cf

user = your_userid

password = your_password

dbname = postfix

table = postfix_mailauth

select_field = maildir

where_field = username

hosts = localhost

到此基本成功,剩下的写些php脚本,所有的事情(添加、删除、修改用户、别名、域名)都可以通过web来做。

注:上文中的your_userid和your_password是指访问mysql的用户名和密码。

#####boot pop3 service

/usr/lib/courier-imap/libexec/pop3d.rc start

#####boot postfix

/usr/sbin/postfix start

一点补充说明:

在编译pam_mysql的时候:

在make之前,编辑Makefile,在第10行将mysql的include路径加入;在第12行将mysql的lib路径加入。

第10行像这样: -Wshadow -pedantic -fPIC -I/usr/local/mysql/include

第12行像这样: export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz

安装courier-imap:需要将mysql的路径加入,否则不能configure成功(configure)

#export PATH=$PATH:/usr/local/mysql/bin

#./configure --without-authpwd --without-authpam --without-authuserdb --without-authshadow --without-cram --without-chkpw --without-authldap --without-authpgsql --without-authdaemon --without-authcustom --with-authmysql=/usr/local/mysql/lib/mysql

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有