메일 및 FTP 호스팅 · 3 min read · Dec 28, 2025

Debian Lenny에서 iRedMail 및 Pure-FTPd를 이용한 가상 메일 및 FTP 호스팅

Debian Lenny에서 iRedMail 및 Pure-FTPd를 이용한 가상 메일 및 FTP 호스팅

iRedMail은 2분 이내에 전체 기능을 갖춘 메일 솔루션을 신속하게 배포할 수 있게 해주는 셸 스크립트입니다. 0.5 버전부터 CentOS 5.x, Debian 5.x, Ubuntu 8.04 및 Ubuntu 9.04(i386 및 x86_64)를 지원합니다. iRedMail은 가상 도메인 및 사용자를 저장하기 위한 백엔드로 OpenLDAP 및 MySQL을 모두 지원합니다.

iRedMail의 OpenLDAP 백엔드는 모든 종류의 애플리케이션을 통합할 수 있게 해줍니다. 이 가이드는 Debian Lenny에서 iRedMail ldap 백엔드에 pure-ftpd를 통합하는 방법을 보여줍니다. 비밀번호는 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: CentOS 5.x에서 LDAP, Postfix, RoundCube, Dovecot, ClamAV, SpamAssassin, DKIM, SPF가 포함된 전체 기능의 메일 서버 구축

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 #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 비밀번호 찾기

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 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 스키마를 가져오는 방법은 두 가지가 있습니다. 하나만 선택하면 됩니다.

  • 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를 수정합니다:

사용자의 FTP 디렉토리를 저장하는 데 사용되는 ‘FTPHomeDir’라는 속성을 객체 클래스 정의 전에 추가해야 합니다.

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 pureftpd.schema가 작동하도록 OpenLDAP 서비스 재시작

/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

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.