서버 설정 · 4 min read · Sep 28, 2025
Postfix, Courier 및 MySQL을 이용한 가상 사용자 및 도메인 (CentOS 5.1)
Postfix, Courier 및 MySQL을 이용한 가상 사용자 및 도메인 (CentOS 5.1)
버전 1.0
저자: Falko Timme
이 튜토리얼은 Falko Timme의 저작권 (c) 2007입니다. 이는 Christoph Haas의 튜토리얼에서 파생된 것으로 http://workaround.org에서 찾을 수 있습니다. 이 튜토리얼은 Creative Commons 라이선스 2.5 또는 이후 버전 하에 자유롭게 사용할 수 있습니다.
이 문서는 가상 사용자 및 도메인을 기반으로 하는 Postfix 메일 서버를 설치하는 방법을 설명합니다. 즉, MySQL 데이터베이스에 있는 사용자 및 도메인입니다. 또한 Courier(Courier-POP3, Courier-IMAP)의 설치 및 구성을 시연하여 Courier가 Postfix가 사용하는 동일한 MySQL 데이터베이스에 대해 인증할 수 있도록 합니다.
결과적으로 생성된 Postfix 서버는 SMTP-AUTH 및 TLS 및 쿼터를 지원합니다(쿼터는 기본적으로 Postfix에 내장되어 있지 않으며, Postfix를 적절하게 패치하는 방법을 보여드리겠습니다). 비밀번호는 데이터베이스에 암호화된 형태로 저장됩니다(내가 찾은 대부분의 문서는 보안 위험이 있는 일반 텍스트 비밀번호를 다루고 있었습니다). 이 튜토리얼은 또한 이메일이 스팸 및 바이러스를 검사할 수 있도록 Amavisd, SpamAssassin 및 ClamAV의 설치를 다룹니다.
이러한 “가상” 설정(가상 사용자 및 도메인이 MySQL 데이터베이스에 있는)의 장점은 “실제” 시스템 사용자를 기반으로 하는 설정보다 성능이 훨씬 더 뛰어나다는 것입니다. 이 가상 설정을 사용하면 메일 서버가 수천 개의 도메인과 사용자를 처리할 수 있습니다. 또한 새로운 사용자/도메인을 추가하거나 기존 것을 편집할 때 MySQL 데이터베이스만 다루면 되므로 관리가 더 쉽습니다. 더 이상 db 파일을 생성하기 위한 postmap 명령이나 Postfix를 다시 로드할 필요가 없습니다. MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법서에서도 설치됩니다. 세 번째 장점은 사용자가 사용자 이름으로 이메일 주소를 가지므로(사용자 이름 + 이메일 주소 대신) 이해하고 기억하기가 더 쉽다는 것입니다.
이 튜토리얼은 CentOS 5.1(i386)을 기반으로 합니다. 기본 CentOS 시스템을 이미 설정했어야 하며, 이는 다음 링크에서 설명되어 있습니다: https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig 및 https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2. 또한 방화벽이 꺼져 있는지(적어도 지금은) 및 SELinux가 비활성화되어 있는지(이것은 중요합니다!) 확인해야 합니다. 이는 https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3의 6장에서 보여줍니다.
이 방법서는 실용적인 가이드를 목적으로 하며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 귀하에게 작동할 것이라는 보증을 제공하지 않습니다!
1 /etc/hosts 편집
이 예제에서 우리의 호스트 이름은 server1.example.com이며, IP 주소는 192.168.0.100입니다. 따라서 /etc/hosts를 다음과 같이 변경합니다:
vi /etc/hosts| # 다음 줄을 제거하지 마십시오. 그렇지 않으면 다양한 프로그램 # 네트워크 기능이 필요하면 실패합니다. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6 |
2 일부 소프트웨어 설치
먼저 소프트웨어 패키지에 대한 GPG 키를 가져옵니다:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*그런 다음 시스템의 기존 패키지를 업데이트합니다:
yum update이제 나중에 필요할 소프트웨어를 설치합니다:
yum groupinstall 'Development Tools'yum groupinstall 'Development Libraries'3 Apache, MySQL, phpMyAdmin 설치
먼저 RPMforge 리포지토리를 CentOS 시스템에서 활성화합니다. 이 튜토리얼에서 설치할 많은 패키지가 공식 CentOS 5.1 리포지토리에서 사용할 수 없기 때문입니다:
rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm(위 링크가 더 이상 작동하지 않으면 현재 버전의 rpmforge-release를 여기에서 찾을 수 있습니다: http://apt.sw.be/packages/rpmforge-release/)
그런 다음 필요한 패키지를 한 번의 명령으로 설치할 수 있습니다(여기에는 Courier-IMAP을 빌드하는 데 필요한 패키지도 포함됨):
yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel4 Courier-IMAP, Courier-Authlib 및 Maildrop 설치
불행히도 Courier-IMAP, Courier-Authlib 및 Maildrop에 대한 rpm 패키지가 없으므로 이 튜토리얼에 설명된 대로 설치해야 합니다: Fedora, RedHat, CentOS에 courier-imap, courier-authlib 및 maildrop 설치 방법
rpm 패키지 생성에 문제가 있는 경우, 제 것을 다운로드할 수 있습니다:
- courier-authlib-0.60.2-1.i386.rpm
- courier-authlib-devel-0.60.2-1.i386.rpm
- courier-authlib-mysql-0.60.2-1.i386.rpm
- courier-imap-4.2.1-1.i386.rpm
- maildrop-2.0.4-1.i386.rpm
5 Postfix에 쿼타 패치 적용
Postfix 소스 rpm을 가져오고, 쿼타 패치로 패치한 다음, 새로운 Postfix rpm 패키지를 빌드하고 설치해야 합니다.
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm
rpm -ivh postfix-2.3.3-2.src.rpm마지막 명령은 무시할 수 있는 몇 가지 경고를 표시합니다:
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using rootcd /usr/src/redhat/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd /usr/src/redhat/SPECS/이제 postfix.spec 파일을 편집해야 합니다:
vi postfix.spec%define MYSQL 0을 %define MYSQL 1로 변경하고, # Patches 구문에 Patch0: postfix-2.3.3-vda.patch를 추가한 다음, 마지막으로 %setup -q 구문에 %patch0 -p1 -b .vda를 추가합니다:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # 필수 패치 적용 %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
그런 다음 쿼타 및 MySQL 지원이 포함된 새로운 Postfix rpm 패키지를 빌드합니다:
rpmbuild -ba postfix.spec다음과 같은 많은 경고가 표시되지만 무시할 수 있습니다:
msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within comment우리의 Postfix rpm 패키지는 /usr/src/redhat/RPMS/i386에 생성되므로, 그곳으로 이동합니다:
cd /usr/src/redhat/RPMS/i386명령
ls -l은 사용 가능한 패키지를 보여줍니다:
[root@server1 i386]# ls -l
total 11280
-rw-r--r-- 1 root root 3819299 Dec 5 15:25 postfix-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 7655069 Dec 5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 50346 Dec 5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm
[root@server1 i386]#Postfix 패키지를 선택하고 다음과 같이 설치합니다:
rpm -ivh postfix-2.3.3-2.i386.rpm(만약 Postfix rpm 패키지 생성에 문제가 있는 경우, 여기에서 제 것을 다운로드할 수 있습니다: postfix-2.3.3-2.i386.rpm.)
6 MySQL 비밀번호 설정 및 phpMyAdmin 구성
MySQL을 시작합니다:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start그런 다음 MySQL root 계정의 비밀번호를 설정합니다:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword이제 phpMyAdmin을 구성합니다. phpMyAdmin이 localhost에서만 연결을 허용하지 않도록 Apache 구성을 변경합니다(디렉토리 구문
vi /etc/httpd/conf.d/phpmyadmin.conf| # # MySQL을 관리하기 위한 웹 애플리케이션 # # |
다음으로 phpMyAdmin의 인증을 쿠키에서 http로 변경합니다:
vi /usr/share/phpmyadmin/config.inc.php| [...] /* 인증 유형 */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |
그런 다음 Apache의 시스템 시작 링크를 생성하고 시작합니다:
chkconfig --levels 235 httpd on
/etc/init.d/httpd start이제 브라우저를 http://server1.example.com/phpmyadmin/ 또는 http://192.168.0.100/phpmyadmin/로 이동하여 사용자 이름 root와 새 root MySQL 비밀번호로 로그인할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.