메일 서버 · 3 min read · Sep 27, 2025
Postfix, Courier, MySQL 및 SquirrelMail을 이용한 가상 사용자 및 도메인 (Mandriva 2009.1 x86_64)
Postfix, Courier, MySQL 및 SquirrelMail을 이용한 가상 사용자 및 도메인 (Mandriva 2009.1 x86_64)
버전 1.0
저자: Falko Timme
이 튜토리얼은 Falko Timme의 저작권 (c) 2009입니다. 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의 설치를 다룹니다. 사용자가 이메일을 읽고 보내고 비밀번호를 변경할 수 있도록 웹메일 인터페이스로 SquirrelMail을 설치하는 방법도 보여드리겠습니다.
이러한 “가상” 설정(가상 사용자 및 도메인이 MySQL 데이터베이스에 있는)은 “실제” 시스템 사용자 기반의 설정보다 훨씬 더 성능이 뛰어납니다. 이 가상 설정을 통해 메일 서버는 수천 개의 도메인과 사용자를 처리할 수 있습니다. 또한 새로운 사용자/도메인을 추가하거나 기존의 것을 편집할 때 MySQL 데이터베이스만 다루면 되므로 관리가 더 쉽습니다. 더 이상 db 파일을 생성하기 위한 postmap 명령이나 Postfix를 다시 로드할 필요가 없습니다. MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법서에서도 설치됩니다. 세 번째 장점은 사용자가 사용자 이름으로 이메일 주소를 가지므로(사용자 이름 + 이메일 주소 대신) 이해하고 기억하기가 더 쉽다는 것입니다.
이 튜토리얼은 Mandriva 2009.1(x86_64)를 기반으로 합니다. 이 튜토리얼의 1~7장에 설명된 대로 기본 Mandriva 시스템을 이미 설정했어야 합니다: https://www.howtoforge.com/perfect-server-mandriva-2009.1-free-x86_64-ispconfig-2. 6.1장 자동 업데이트 스크립트 생성은 생략하십시오. Postfix 업데이트가 있을 경우, 3장에서 구축할 사용자 정의 Postfix를 대체하게 됩니다!
이 방법서는 실용적인 가이드를 위한 것이며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 귀하에게 작동할 것이라는 보증을 하지 않습니다!
사전 참고
시스템은 정적 IP 주소를 가져야 합니다. 이 튜토리얼에서는 192.168.0.100을 IP 주소로 사용하고 server1.example.com을 호스트 이름으로 사용합니다.
1 Apache, MySQL, phpMyAdmin 설치
먼저 패키지 데이터베이스를 업데이트합니다:
urpmi.update -a하나의 명령으로 패키지를 설치할 수 있습니다:
urpmi MySQL MySQL-client lib64mysql-devel phpmyadmin db4-devel html2text lib64sasl-devel openssl-devel openldap-devel pcre-devel postgresql8.3-devel rpm-build2 Courier 및 saslauthd 설치
Courier 및 saslauthd를 설치하려면 다음과 같이 실행합니다:
urpmi courier-authlib courier-authlib-mysql courier-imap courier-pop cyrus-sasl lib64sasl2 lib64sasl2-devel lib64sasl2-plug-plain lib64sasl2-plug-anonymous lib64sasl2-plug-crammd5 lib64sasl2-plug-digestmd5 lib64sasl2-plug-gssapi lib64sasl2-plug-login3 Postfix에 쿼터 패치 적용
Postfix 소스 rpm을 가져와 쿼터 패치로 패치한 후, 새로운 Postfix rpm 패키지를 빌드하고 설치해야 합니다.
cd /usr/src
wget ftp://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/2009.1/SRPMS/main/release/postfix-2.5.6-4mdv2009.1.src.rpm
rpm -ivh postfix-2.5.6-4mdv2009.1.src.rpm마지막 명령은 무시할 수 있는 몇 가지 경고를 표시합니다:
warning: user mandrake does not exist - using root
warning: group mandrake does not exist - using root이제 postfix-2.5.6-vda-ng 패치(http://vda.sourceforge.net/에서)를 사용하여 Postfix 소스를 패치합니다:
cd /root/rpmbuild/SOURCES
tar xvfz postfix-2.5.6.tar.gz
wget http://vda.sourceforge.net/VDA/postfix-2.5.6-vda-ng.patch.gz
gunzip postfix-2.5.6-vda-ng.patch.gz
cd postfix-2.5.6
patch -p1 < ../postfix-2.5.6-vda-ng.patch
cd ..
mv postfix-2.5.6.tar.gz postfix-2.5.6.tar.gz_orig
tar -pczf postfix-2.5.6.tar.gz postfix-2.5.6/
rm -fr postfix-2.5.6/그런 다음 쿼터 및 MySQL 지원이 포함된 새로운 Postfix rpm 패키지를 빌드합니다:
cd /root/rpmbuild/SPECS/
rpmbuild -ba postfix.spec우리의 Postfix rpm 패키지는 /root/rpmbuild/RPMS/x86_64에 생성되므로 그곳으로 이동합니다:
cd /root/rpmbuild/RPMS/x86_64명령
ls -l은 사용 가능한 패키지를 보여줍니다:
[root@server1 x86_64]# ls -l
total 3304
-rw-r--r-- 1 root root 225752 2009-10-07 15:49 lib64postfix1-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 1273469 2009-10-07 15:49 postfix-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 1746832 2009-10-07 15:49 postfix-debug-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 29372 2009-10-07 15:49 postfix-ldap-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 24616 2009-10-07 15:49 postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 24846 2009-10-07 15:49 postfix-pcre-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 24691 2009-10-07 15:49 postfix-pgsql-2.5.6-4mdv2009.1.x86_64.rpm
[root@server1 x86_64]#먼저 현재 Postfix 패키지를 제거합니다…
urpme postfix…그런 다음 postfix 및 postfix-mysql 패키지를 선택하고 다음과 같이 설치합니다:
rpm -ivh postfix-2.5.6-4mdv2009.1.x86_64.rpm postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm4 MySQL 비밀번호 설정 및 phpMyAdmin 구성
기본적으로 Mandriva 2009.1의 MySQL 패키지에서 네트워킹이 활성화되어 있지 않지만, ISPConfig에서는 네트워킹이 필요합니다. /etc/my.cnf에서 skip-networking 줄을 주석 처리하여 이를 변경할 수 있습니다:
vi /etc/my.cnf| [...] # TCP/IP 포트에서 전혀 듣지 않습니다. 이는 보안 향상이 될 수 있습니다, # mysqld에 연결해야 하는 모든 프로세스가 동일한 호스트에서 실행되는 경우. # mysqld와의 모든 상호작용은 Unix 소켓 또는 명명된 파이프를 통해 이루어져야 합니다. # 이 옵션을 사용하되 Windows에서 명명된 파이프를 활성화하지 않으면 # ("enable-named-pipe" 옵션을 통해) mysqld가 쓸모없게 됩니다! # #skip-networking [...] |
그 후 Apache 및 MySQL에 대한 시스템 시작 링크를 생성합니다…
chkconfig mysqld on
chkconfig httpd on…그리고 두 서비스를 시작합니다:
/etc/init.d/mysqld start
/etc/init.d/httpd start이제 네트워킹이 활성화되었는지 확인합니다. 다음을 실행합니다:
netstat -tap | grep mysql출력은 다음과 같아야 합니다:
[root@server1 x86_64]# netstat -tap | grep mysql
tcp 0 0 *:mysql-im *:* LISTEN 14395/mysqlmanager
tcp 0 0 *:mysql *:* LISTEN 14403/mysqld
[root@server1 x86_64]#다음으로, 다음을 실행하여
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordroot 사용자에 대한 비밀번호를 설정합니다(그렇지 않으면 누구나 MySQL 데이터베이스에 접근할 수 있습니다!).
이제 브라우저를 http://server1.example.com/phpmyadmin/ 또는 http://192.168.0.100/phpmyadmin/로 이동하여 사용자 이름 root와 새 root MySQL 비밀번호로 로그인할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.