메일 서버 · 4 min read · Nov 09, 2025
Postfix, Courier 및 MySQL을 이용한 가상 사용자 및 도메인 (Fedora Core 5)
Postfix, Courier 및 MySQL을 이용한 가상 사용자 및 도메인 (Fedora Core 5)
버전 1.0
저자: Falko Timme
이 튜토리얼은 Falko Timme의 저작권 (c) 2006입니다. 이는 Christoph Haas의 튜토리얼에서 파생된 것으로 http://workaround.org에서 찾을 수 있습니다. 이 튜토리얼은 Creative Commons 라이선스 2.5 또는 이후 버전 하에 자유롭게 사용할 수 있습니다.
이 문서는 MySQL 데이터베이스에 있는 가상 사용자 및 도메인을 기반으로 하는 Postfix 기반의 메일 서버를 설치하는 방법을 설명합니다. 또한 Courier (Courier-POP3, Courier-IMAP)의 설치 및 구성도 시연하여 Courier가 Postfix가 사용하는 동일한 MySQL 데이터베이스에 대해 인증할 수 있도록 합니다.
결과적으로 생성된 Postfix 서버는 SMTP-AUTH 및 TLS와 쿼터를 지원합니다 (쿼터는 기본적으로 Postfix에 내장되어 있지 않으며, Postfix를 적절하게 패치하는 방법을 보여드리겠습니다). 비밀번호는 데이터베이스에 암호화된 형태로 저장됩니다 (내가 찾은 대부분의 문서는 보안 위험이 있는 일반 텍스트 비밀번호를 다루고 있었습니다). 이 튜토리얼은 또한 이메일이 스팸 및 바이러스를 검사할 수 있도록 Amavisd, SpamAssassin 및 ClamAV의 설치를 다룹니다.
이러한 “가상” 설정(가상 사용자 및 도메인이 MySQL 데이터베이스에 있는)의 장점은 “실제” 시스템 사용자 기반의 설정보다 훨씬 더 성능이 뛰어나다는 것입니다. 이 가상 설정을 통해 메일 서버는 수천 개의 도메인과 사용자를 처리할 수 있습니다. 또한 새로운 사용자/도메인을 추가하거나 기존의 것을 편집할 때 MySQL 데이터베이스만 다루면 되므로 관리가 더 쉽습니다. 더 이상 db 파일을 생성하기 위한 postmap 명령이나 Postfix를 다시 로드할 필요가 없습니다. MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법에서도 설치됩니다. 세 번째 장점은 사용자가 사용자 이름으로 이메일 주소를 가지므로 (사용자 이름 + 이메일 주소 대신) 이해하고 기억하기가 더 쉽다는 것입니다.
이 튜토리얼은 Fedora Core 5 (i386)를 기반으로 합니다. 여기에서 설명한 대로 기본 Fedora 시스템을 이미 설정했어야 합니다 (x86_64 시스템에 대한 것이지만 i386 시스템에 대한 절차는 동일합니다): https://www.howtoforge.com/perfect_setup_fedora_core_5 및 https://www.howtoforge.com/perfect_setup_fedora_core_5_p2. 또한 방화벽이 꺼져 있는지 (적어도 지금은) 확인하고 SELinux가 비활성화되어 있는지 확인해야 합니다 (이것은 중요합니다!), https://www.howtoforge.com/perfect_setup_fedora_core_5_p3에서 보여준 대로.
이 방법은 실용적인 가이드를 위한 것이며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보증을 제공하지 않습니다!
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 |
2 Fedora 패키지를 위한 추가 리포지토리 구성
설치해야 할 패키지 중 일부(예: courier-imap)는 공식 Fedora 리포지토리에 포함되어 있지 않으므로 yum에 다른 리포지토리를 추가해야 합니다:
rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpm그 후, /etc/yum.repos.d/enlartenment.repo에서 enabled를 1로 설정해야 합니다:
vi /etc/yum.repos.d/enlartenment.repo| [enlartenment] name=Enlartenment Repository for $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Enlartenment Repository for $releasever - Sources baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |
다음으로, 해당 리포지토리의 GPG 키를 가져옵니다:
rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf3 Postfix, Courier, Saslauthd, MySQL, phpMyAdmin 설치
이 모든 것은 단일 명령으로 설치할 수 있습니다:
yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-devel다음과 같은 메시지가 표시되면:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Public key for ntp-4.2.0.a.20050816-11.FC5.i386.rpm is not installed
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <[email protected]>"
Is this ok [y/N]:y로 응답하십시오.
4 Postfix에 쿼타 패치 적용
Postfix 소스 rpm을 가져오고, 쿼타 패치로 패치한 후, 새로운 Postfix rpm 패키지를 빌드하고 설치해야 합니다.
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm
rpm -ivh postfix-2.2.8-1.2.src.rpm
cd /usr/src/redhat/SOURCES
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz
gunzip postfix-2.2.8-vda.patch.gz
cd /usr/src/redhat/SPECS/이제 postfix.spec 파일을 편집해야 합니다:
vi postfix.spec%define MYSQL 0을 %define MYSQL 1로 변경하고, # Patches 구문에 Patch0: postfix-2.2.8-vda.patch를 추가한 후, 마지막으로 %setup -q 구문에 %patch0 -p1 -b .vda를 추가합니다:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.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 %patch4 -p1 -b .postfix-hostname-fqdn %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
rpm -ivh postfix-2.2.8-1.2.i386.rpm(만약 Postfix rpm 패키지를 생성하는 데 문제가 있다면, 여기에서 내 것을 다운로드할 수 있습니다.)
5 MySQL 비밀번호 설정 및 phpMyAdmin 구성
MySQL을 시작합니다:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start그런 다음 MySQL 루트 계정의 비밀번호를 설정합니다:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword이제 phpMyAdmin을 구성합니다. /usr/share/phpmyadmin/config.inc.php를 생성합니다:
vi /usr/share/phpmyadmin/config.inc.php| |
그런 다음 phpMyAdmin이 localhost뿐만 아니라 연결을 허용하도록 Apache 구성을 변경합니다:
vi /etc/httpd/conf.d/phpmyadmin.conf| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # |
그런 다음 Apache에 대한 시스템 시작 링크를 생성하고 시작합니다:
chkconfig --levels 235 httpd on
/etc/init.d/httpd start이제 브라우저를 http://server1.example.com/phpmyadmin/로 이동하여 사용자 이름 root와 새 루트 MySQL 비밀번호로 로그인할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.