사이트 내 전체검색
Postfix, Courier, MySQL And SquirrelMail 을 이용한 가상 사용자 및 도메인 설정
로빈아빠
https://cmd.kr/server/970 URL이 복사되었습니다.

본문

1 아키텍쳐

이 글에서 구성하려는 메일 시스템 아키첵처.

chart

http://www200.pair.com/mecham/spam/spamfilter20050626.htm

 

1.1 준비

대상 OS: Ubuntu 8.04, 8.10

host name(FQDN): example.com

host ip address: 192.168.0.1

 

루트 사용자로 작업을 진행한다.
  1. sudo su

  2. sudo bash

 

It is very important that you make /bin/sh a symlink to /bin/bash...
  1. ln -sf /bin/bash /bin/sh

 

disable AppArmor:
  1. sudo /etc/init.d/apparmor stop
    sudo update-rc.d -f apparmor remove
    sudo apt-get remove apparmor apparmor-utils

 

3 Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

To install Postfix, Courier, Saslauthd, MySQL, and phpMyAdmin, we simply run

  1. sudo apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl apache2 apache2.2-common apache2-utils phpmyadmin libapache2-mod-php5 php5 php5-mysql libpam-smbpass

 

MySQL, Courier 등의 설정 질문에 아래와 같이 비밀번호 등을 입력한다.

  1. New password for the MySQL "root" user: <-- root sql password
    Repeat password for the MySQL "root" user: <-- root sql password
    Create directories for web-based administration? <-- No
    General type of mail configuration: <-- Internet Site
    System mail name: <-- server1.example.com
    SSL certificate required <-- Ok
    Web server to reconfigure automatically: <-- apache2

 

 

Postfix reconfigure

postfix 재설정을 할 경우 도메인 이름과 포스트마스터에 대한 alias 설정을 꼭 한다.

  1. sudo dpkg-reconfigure postfix
  • domain name
  • postmaster

 

 

3 Apply The Quota Patch To Postfix

  1. sudo apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-server-dev-8.3 po-debconf dpatch libmysqlclient15-dev lsb-release libcdb-dev libdb-dev hardening-wrapper

 

3.1 Postfix patch

Postfix sources에 quota patch를 해주어 새로운 Postfix .deb packages 만들어 설치한다:

 

source 다운로드
  1. cd /usr/src
    sudo apt-get source postfix

 

 

Postfix 버전을 확인해 해당 버전의 패치를 다운 받는다.
  1. sudo postconf -d | grep mail_version

우분투 8.04의 경우 postfix-2.5.1이 설치되고, 우분투 8.10은 postfix-2.5.5가 설치된다.

 

http://vda.sourceforge.net/VDA/postfix-2.5.6-vda-ng.patch.gz

http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz

http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng-64bit.patch.gz

http://vda.sourceforge.net/VDA/postfix-2.5.1-vda-ng.patch.gz

 

  1. sudo wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz

    sudo gunzip postfix-2.5.5-vda-ng.patch.gz
    cd postfix-2.5.5
    sudo patch -p1 < ../postfix-2.5.1-vda-ng.patch
    sudo dpkg-buildpackage

 

dpkg-buildpackage 실행시 아래와 같은 경고는 무시해도 좋다.
  1. dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

 

소스 디렉토리를 빠져나가

새로운 패키지가 만들어 졌다.

  1. cd ..
  2. ls -l
  3. -rw-r--r--  1 root src    41190 2009-03-04 14:10 postfix-cdb_2.5.5-1_i386.deb
    -rw-r--r--  1 root src   140516 2009-03-04 14:10 postfix-dev_2.5.5-1_all.deb
    -rw-r--r--  1 root src   913088 2009-03-04 14:10 postfix-doc_2.5.5-1_all.deb
    -rw-r--r--  1 root src    48716 2009-03-04 14:10 postfix-ldap_2.5.5-1_i386.deb
    -rw-r--r--  1 root src    42734 2009-03-04 14:10 postfix-mysql_2.5.5-1_i386.deb
    -rw-r--r--  1 root src    42644 2009-03-04 14:10 postfix-pcre_2.5.5-1_i386.deb
    -rw-r--r--  1 root src    42866 2009-03-04 14:10 postfix-pgsql_2.5.5-1_i386.deb
    -rw-r--r--  1 root src  1228516 2009-03-04 14:10 postfix_2.5.5-1_i386.deb

 

postfix 와 postfix-mysql packages 를 설치한다:

 

  1.  sudo dpkg -i postfix_2.5.5-1_i386.deb postfix-mysql_2.5.5-1_i386.deb

 

 

4 Create The MySQL Database For Postfix/Courier

 

Now we create a database called mail:
  1. mysqladmin -u root -p create mail

 

Next, we go to the MySQL shell:
  1. mysql -u root -p

 

select, insert, update, delete 권한을 mail_admin에 준다.
  1. mysql> grant select, insert, update, delete on mail.* to 'mail_admin'@'localhost' identified by 'password';
    mysql> grant select, insert, update, delete on mail.* to 'mail_admin'@'192.168.1.%' identified by 'password';
  2. mysql> flush privileges;
  3.  
  • 'mail_admin'@'localhost' 은 localhost 에서 db 접근을 허용
  • 'mail_admin'@'192.168.1.%' 은 192.168.1 네트워크에서 db 접근을 허용

 

table 생성
  1. mysql> USE mail;

 

  1. CREATE TABLE domains (
    domain varchar(50) NOT NULL,
    PRIMARY KEY (domain) )
    TYPE=MyISAM;

 

  1. CREATE TABLE forwardings (
    source varchar(80) NOT NULL,
    destination TEXT NOT NULL,
    PRIMARY KEY (source) )
    TYPE=MyISAM;

 

  1. CREATE TABLE users (
    email varchar(80) NOT NULL,
    password varchar(20) NOT NULL,
    quota INT(10) DEFAULT '10485760',
    PRIMARY KEY (email)
    ) TYPE=MyISAM;

 

  1. CREATE TABLE transport (
    domain varchar(128) NOT NULL default '',
    transport varchar(128) NOT NULL default '',
    UNIQUE KEY domain (domain)
    ) TYPE=MyISAM;

 

  1. quit;

 

domain 테이블 : 가상 도메인 이름
domain
example.com

 

forwarding 테이블: 포워딩으로 설정된 이메일 alias
sourcedestination
info@example.comsales@example.com

 

user 테이블: 사용자 이메일과 암호화된 패스워드, quota의 기본 값은 10485760로 10Mb이다.
emailpasswordquota
sales@example.comNo9.E4skNvGa. ("secret" in encrypted form)10485760

 

transport 테이블: 옵션으로 It allows to forward mails for single users, whole domains or all mails to another server. 
domaintransport
example.comsmtp:[1.2.3.4]
  • 위 사례는 도메인 exmaple.com으로 오는 모든 메일이 smtp를 이용해 1.2.3.4로 전달한다.
  • the square brackets [] mean "do not make a lookup of the MX DNS record"
  • 도메일 명을 이용하면 []를 사용하지 말라.

 

예제
  1. mysql> INSERT INTO 'domains' ('domain') VALUES ('exmaple.com');
  2. mysql> INSERT INTO users('email', 'password', 'quota') VALUES ('user_id@example.com', ENCRYPT('012345'), 104857600);

 

테스트를 위해 example.com을 hosts에 등록.

sudo vi /etc/hosts

192.168.1.23      example.com

 

GUI 환경에서 사용은 웹브라우저를 이용해 phpMyadmin을 이용한다.

http://192.168.0.100/phpmyadmin/

 

5 Configure Postfix

postfix와 mysql의 통신은 127.0.0.1을 통해 이루어지고, mysqld 데몬에서 127.0.0.1주소와 바인딩을 해야한다.

 

 

vi /etc/mysql/my.cnf
  1. bind-address = 127.0.0.1
    
  1. /etc/init.d/mysql restart

 

 

  1. sudo dpkg-reconfigure postfix ;
postconf -e 'home_mailbox = Maildir/'
Postfix와 mysql 설정을 위한 여섯개의 파일을 만든다.

혹은 첨부된 자료를 이용: postfix-mysq-cf.tar.bz2

vi /etc/postfix/mysql-virtual_domains.cf
  1. user = mail_admin

    password = mail_admin_password

    dbname = mail

    query = SELECT domain AS virtual FROM domains WHERE domain='%s'

    hosts = 127.0.0.1

댓글목록

등록된 댓글이 없습니다.

1,139 (1/23P)

Search

Copyright © Cmd 명령어 3.21.113.147