虚拟邮件和FTP托管与iRedMail和纯FTPd在Debian Lenny

虚拟邮件和FTP托管与iRedMail和纯FTPd在Debian Lenny   iRedMail是一个shell脚本,让您快速部署一个 全功能...

虚拟邮件和FTP托管iRedMail和Pure-FTPd在Debian Lenny上

iRedMail是一个外壳脚本,可让您在不到2分钟内快速部署全功能邮件解决方案。 自版本0.5以来,它支持CentOS 5.x,Debian 5.x,Ubuntu 8.04和Ubuntu 9.04(i386和x86_64)。 iRedMail支持OpenLDAP和MySQL作为后端用于存储虚拟域和用户。

iRedMail的OpenLDAP后端可让您集成各种应用程序。 本指南介绍如何将pure-ftpd集成到Debian Lenny上的iRedMail ldap后端,密码将存储在ldap中,您可以通过webmail更改密码。

本教程基于Debian 5.01,所以建议您设置一个最小的Debian 5.01,安装iredmail 0.51并选择OpenLDAP作为后端,如本教程所示,继续执行本教程:

1安装Pure-FTPd

安装纯ftpd:

apt-get install pure-ftpd-ldap

2将PureFTPd配置为独立服务器

现在我们必须将PureFTPd配置为独立的守护进程(目前由inetd控制)。 为此,我们打开/ etc / default / pure-ftpd-common ,将参数STANDALONE_OR_INETD的值更改为standalone

vi /etc/default/pure-ftpd-common

#STANDALONE_OR_INETD=inetd
STANDALONE_OR_INETD=standalone    #change to standalone

接下来,我们修改/etc/inetd.conf并注释掉ftp行:

#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

之后,我们重新启动inetd和PureFTPd:

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-ldap restart

3基本设置在/ etc / pure-ftpd / conf /

创建文件/ etc / pure-ftpd / conf / ChrootEveryone ,其中只包含字符串yes

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone

这将使PureFTPd在其主目录中的每个虚拟用户都chroot,因此他将无法浏览其主目录之外的目录和文件。

还要创建文件/ etc / pure-ftpd / conf / CreateHomeDir ,它再次只包含字符串yes

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir

这将使PureFTPd在用户登录并且主目录不存在时创建用户的主目录。

最后创建文件/ etc / pure-ftpd / conf / DontResolve ,它再次只包含字符串yes

echo "yes" > /etc/pure-ftpd/conf/DontResolve

这将使PureFTPd不会查找可以显着加速连接并减少带宽使用的主机名。

4找到cn = vmail密码

在iremail安装期间随机创建vmail密码。您可以在/etc/postfix/ldap_virtual_mailbox_domains.cf中找到密码:

cat /etc/postfix/ldap_virtual_mailbox_domains.cf

bind_dn         = cn=vmail,dc=example,dc=com
bind_pw         = kZ6uB29mViWKWI9lOH3cGnF7z3Dw3B #cn=vmail password

5配置LDAP设置

vi /etc/pure-ftpd/db/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 1000      # <- UID of 'vmail' user.
LDAPDefaultGID 1000      # <- GID of 'vmail' user.
LDAPFilter (&(objectClass=PureFTPdUser)(mail=\L)(FTPStatus=enabled))
LDAPHomeDir FTPHomeDir  # <- This is new attribute, we will add it
LDAPVersion 3

6获取架构

您有两种获取pureftpd模式的方法。你只需要选择一个。
  • 下载已被iremail修改的模式。
  • 获取pure-ftpd-1.0.24中发送的模式并对其进行修改。

6.1下载由iremail修改的模式:

wget http://iredmail.googlecode.com/svn/trunk/extra/pureftpd.schema -P /etc/ldap/schema/

6.2获取pure-ftpd-1.0.24中发送的模式:

cd /tmp/
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.24.tar.bz2
tar xjf pure-ftpd-1.0.24.tar.bz2
cp pure-ftpd-1.0.24/pureftpd.schema /etc/ldap/schema/

修改/etc/ldap/schema/pureftpd.schema

我们需要在对象类定义之前添加一个属性“FTPHomeDir”,用于存储用户的FTP目录。

vi /etc/ldap/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      
        MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ 
              FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $
              FTPuid $ FTPgid $ FTPHomeDir ) ) # <-- Add $ FTPHomeDir

7修改/etc/ldap/slapd.conf

vi /etc/ldap/slapd.conf

iredmail.schema之后包含pureftpd.schema

include /etc/ldap/schema/iredmail.schema
include /etc/ldap/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

8创建FTP主目录

FTP数据都存储在/ home / ftp /目录中。 创建/ home / ftp / ,所有者必须是root用户。

mkdir /home/ftp/
ls -dl /home/ftp

drwxr-xr-x 2 root root 4096 Oct 3 16:53 /home/ftp

9重新启动OpenLDAP服务以使pureftpd.schema工作

/etc/init.d/slapd restart
/etc/init.d/pure-ftpd-ldap restart

确保纯ftpd正在运行:

# netstat -ntlp | grep pure-ftpd

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 12548/pure-ftpd (SE
tcp6 0 0 :::21 :::* LISTEN 12548/pure-ftpd (SE