虚拟邮件和FTP托管iRedMail和Pure-FTPd
iRedMail是一个外壳脚本,可让您在不到2分钟内快速部署全功能邮件解决方案。 自iRedMail 0.5以来,它支持Debian 5.0.1和Ubuntu 8.04和Ubuntu 9.04(i386和x86_64)。 iRedMail支持OpenLDAP和MySQL作为后端用于存储虚拟域和用户。
iRedMail的OpenLDAP后端可让您集成各种应用程序。 本指南介绍如何将pure-ftpd集成到CentOS 5.x上的iRedMail ldap后端,密码将存储在ldap中,您可以通过webmail更改密码。
本教程基于CentOS 5.3,所以建议您设置一个CentOS 5.3,安装iRedMail 0.5 RC2并选择OpenLDAP作为后端,如这些教程所示:
- iRedMail:使用LDAP,Postfix,RoundCube / SquirrelMail,Dovecot,ClamAV,SpamAssassin,Amavisd(Debian 5.0.1)的邮件服务器
- iRedMail:使用LDAP,Postfix,RoundCube,Dovecot,ClamAV,SpamAssassin,DKIM,SPF在CentOS 5.x上构建全功能邮件服务器
1安装Pure-FTPd
使用rpmforge yum存储库安装pure-ftpd。
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm # <-- For i386
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm # <-- For x86_64
安装纯ftpd:
yum install pure-ftpd
2配置Pure-FTPd
默认配置文件:
- /etc/pure-ftpd/pure-ftpd.conf
- /etc/pure-ftpd/pureftpd-ldap.conf
/etc/pure-ftpd/pure-ftpd.conf中的基本设置
确保CreateHomeDir
和LDAPConfigFile
选项已启用,如下所示:
vi /etc/pure-ftpd/pure-ftpd.conf
CreateHomeDir yes LDAPConfigFile /etc/pure-ftpd/pureftpd-ldap.conf |
找到cn = vmail密码
vmail密码是随机创建的iremail安装。 您可以在/etc/postfix/ldap_virtual_mailbox_domains.cf
中找到密码:
vi /etc/postfix/ldap_virtual_mailbox_domains.cf
bind_dn = cn=vmail,dc=example,dc=com bind_pw = kZ6uB29mViWKWI9lOH3cGnF7z3Dw3B #cn=vmail password |
在/etc/pure-ftpd/pureftpd-ldap.conf中配置LDAP设置
vi /etc/pure-ftpd/pureftpd-ldap.conf
LDAPServer localhost LDAPPort 389 LDAPBaseDN o=domains,dc=example,dc=com LDAPBindDN cn=vmail,dc=example,dc=com LDAPBindPW kZ6uB29mViWKWI9lOH3cGnF7z3Dw3B #cn=vmail password LDAPDefaultUID 500 # <- UID of 'vmail' user. LDAPDefaultGID 500 # <- GID of 'vmail' user. LDAPFilter (&(objectClass=PureFTPdUser)(mail=\L)(FTPStatus=enabled)) LDAPHomeDir FTPHomeDir # <- This is new attribute, we will add it LDAPVersion 3 |
3配置LDAP
获取架构
您有两种获取pureftpd模式的方法。 你只需要选择一个。
- 下载已被iremail修改的模式。
- 获取pure-ftpd-1.0.22中发送的模式并进行修改。
下载由iremail修改的模式:
wget http://iredmail.googlecode.com/hg/extra/pureftpd.schema -P /etc/openldap/schema/
获取pure-ftpd-1.0.22中发送的模式:
cd /tmp/
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.22.tar.bz2
tar xjf pure-ftpd-1.0.22.tar.bz2
cp pure-ftpd-1.0.22/pureftpd.schema /etc/openldap/schema/
修改/etc/openldap/schema/pureftpd.schema
我们需要在对象类定义之前添加一个属性“FTPHomeDir”,用于存储用户的FTP目录。
vi /etc/openldap/schema/pureftpd.schema
attributetype ( 1.3.6.1.4.1.6981.11.3.9 NAME 'FTPgid' DESC 'System uid (overrides gidNumber if present)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) # Add new attributetype FTPHomeDir. attributetype ( 1.3.6.1.4.1.6981.11.3.10 NAME 'FTPHomeDir' DESC 'FTP directory' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) ## New Pure-FTPd object type objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' DESC 'PureFTPd user with optional quota, throttling and ratio' SUP top AUXILIARY # <-- Add this line. MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $ FTPuid $ FTPgid $ FTPHomeDir ) ) # <-- Add $ FTPHomeDir |
修改/etc/openldap/slapd.conf
vi /etc/openldap/slapd.conf
在iredmail.schema
之后包含pureftpd.schema
:
include /etc/openldap/schema/iredmail.schema include /etc/openldap/schema/pureftpd.schema # <-- Add this line. |
添加在pureftpd.schema中定义的属性的索引
:
# Default index. # index objectClass eq,pres index ou,cn,mail,surname,givenname,telephoneNumber eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub # <-- Add the below #Index for FTP attrs. index FTPQuotaFiles,FTPQuotaMBytes eq,pres index FTPUploadRatio,FTPDownloadRatio eq,pres index FTPUploadBandwidth,FTPDownloadBandwidth eq,pres index FTPStatus,FTPuid,FTPgid,FTPHomeDir eq,pres |
4创建FTP主目录
FTP数据都存储在/ home / ftp /
目录中。 创建/ home / ftp /
,所有者必须是root用户。
mkdir /home/ftp/
ls -dl /home/ftp
drwxr-xr-x 3 root root 4096 Jun 7 20:18 /home/ftp/
5重新启动OpenLDAP服务,使pureftpd.schema工作
/etc/init.d/ldap restart
/etc/init.d/pure-ftpd restart
确保纯ftpd正在运行:
netstat -ntlp | grep pure-ftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2062 / pure-ftpd(SERVER)
tcp 0 0 ::: 21 ::: * LISTEN 2062 / pure-ftpd(SERVER)