Хостинг · 3 min read · Dec 28, 2025

Виртуальный почтовый и FTP-хостинг с iRedMail и Pure-FTPd на Debian Lenny

Виртуальный почтовый и 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 в качестве бэкендов для хранения виртуальных доменов и пользователей.

Бэкенд OpenLDAP iRedMail позволяет интегрировать все виды приложений. Этот гид показывает, как интегрировать pure-ftpd в бэкенд iRedMail ldap на Debian Lenny, пароли будут храниться в ldap, и вы сможете изменить пароль через веб-почту.

Этот учебник основан на Debian 5.01, поэтому я предлагаю вам установить минимум Debian 5.01, установить iredmail 0.51 и выбрать 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

Установите pure-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 #измените на 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

Пароль vmail был случайно создан во время установки iredmail. Вы можете найти пароль в /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 |

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 LDAPDefaultUID 1000 # <- UID пользователя 'vmail'. LDAPDefaultGID 1000 # <- GID пользователя 'vmail'. LDAPFilter (&(objectClass=PureFTPdUser)(mail=\L)(FTPStatus=enabled)) LDAPHomeDir FTPHomeDir # <- Это новый атрибут, который мы добавим LDAPVersion 3 |

6 Получите схему

У вас есть два способа получить схему pureftpd. Вам нужно выбрать только один.

  • Загрузите схему, которая была изменена iredmail.
  • Получите схему, поставляемую вместе с pure-ftpd-1.0.24, и измените ее.

6.1 Загрузите схему, которая была изменена iredmail:

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’ перед определением objectclass, используемым для хранения FTP-каталога пользователя.

vi /etc/ldap/schema/pureftpd.schema

| attributetype ( 1.3.6.1.4.1.6981.11.3.9 NAME 'FTPgid' DESC 'Системный uid (заменяет gidNumber, если он присутствует)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) # Добавить новый attributetype FTPHomeDir. attributetype ( 1.3.6.1.4.1.6981.11.3.10 NAME 'FTPHomeDir' DESC 'FTP каталог' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) ## Новый тип объекта Pure-FTPd objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' DESC 'Пользователь PureFTPd с необязательной квотой, ограничением и соотношением' SUP top AUXILIARY MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $ FTPuid $ FTPgid $ FTPHomeDir ) ) # <-- Добавить $ FTPHomeDir |

7 Измените /etc/ldap/slapd.conf

vi /etc/ldap/slapd.conf

Включите pureftpd.schema после iredmail.schema:

| include /etc/ldap/schema/iredmail.schema include /etc/ldap/schema/pureftpd.schema # <-- Добавьте эту строку. |

Добавьте индекс для атрибутов, определенных в pureftpd.schema:

| # Индекс по умолчанию. # 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 # <-- Добавьте ниже #Индекс для FTP атрибутов. 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

Убедитесь, что pure-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
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.