Nmail PHP Guide

- Linux/Unix -

Version 3.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://passkorea.net


 

-   -

 

I.  설치 준비. - 3 -

1.  설치시 필요한 프로그램 버전. - 3 -

2.  리눅스 배포판 선택. - 3 -

3.  메뉴얼내의 예제 실행 안내. - 3 -

4.  Apache + PHP + MySQL RPM 설치. - 4 -

5.  편지함 백업/복구 관리에 필요한 설치. - 5 -

6.  자체 네임서버(DNS) 운영. - 5 -

7.  서버에서 사용중인 네임서버 확인. - 6 -

8.  표준 시간 동기화. - 6 -

II.       설치. - 7 -

1.  PHP 경로 확인. - 7 -

2.  PHP 확장모듈 확인. - 8 -

3.  MySQL 설정 변경. - 9 -

4.  기존 메일서비스(SMTP/POP3) 중지. - 10 -

5.  일부 리눅스 배포판의 SELinux 중지. - 11 -

6.  설치 프로그램 실행 (UTF-8 제품) - 11 -

7.  설치가 완료되면, 설치 프로그램 보관. - 12 -

8.  Apache 가상호스트 설정. - 12 -

9.  Apache 앨리어스 설정. - 14 -

10. 방화벽 설정 확인. - 16 -

11. 웹메일 접속. - 16 -

12. 멀티 도메인, 회원 추가. - 16 -

13. TLS 통신을 위해 SSL 인증서 발급 적용 방법. - 17 -

III.     설치시 문제 해결. - 18 -

1.  PHP mailparse 모듈이 자동으로 설치되지 않는 경우. (컴파일 설치) - 18 -

2.  메일엔진 소스 컴파일이 필요한 경우. - 20 -

3.  웹메일에서 받은 메일이 보이지 않는 경우. - 21 -

IV.       메일서버 관리 안내. - 23 -

V.  POP3(아웃룩 등) 이용안내. - 24 -

VI.       리턴메일 분석 안내. - 25 -

 


 

 

 

I.     설치 준비

 

 

 

1.    설치시 필요한 프로그램 버전

엔메일은 APM(Apache + PHP + MySQL) 데몬을 기반으로 Linux/Unix 환경에서 사용하도록 제작되었습니다엔메일 동작에 필요한 최소사양은 다음과 같습니다.

 

[OS] Linux, FreeBSD, Solaris (64bit OS만 지원)

[Web Server] Apache 2.0 / 2.2 / 2.4 지원

[Language] PHP 5.1 이상, 5.3 ~ 5.6 / PHP 7.0 지원

     (mbstring, iconv 모듈 필요)

[DBMS] MariaDB 5.5, 10.x 설치권장 / MySQL 4, MySQL 5.6 지원.

 

 

2.    리눅스 배포판 선택

리눅스의 경우 국내에서 가장 많이 사용되는 레드햇 계열의 리눅스업데이트가 지속적으로 이루어지는 배포판을 권장해드리고 있습니다. 공식 업데이트가 중단된 제품들은 보안상 문제가 생길 가능성이 높으므로 사용하지 않는 것이 좋습니다.

 

- CentOS : http://www.centos.org/

=> 최신 버전인 CentOS 6.x, 7.x 64bit 에서 설치 가능합니다.

=> 레드햇 엔터프라이즈 버전을 기반으로 만들어진 배포판입니다. (권장)

 

 

3.    메뉴얼내의 예제 실행 안내

아래처럼 사각박스안에 들어가는 내용은 서버에 SSL/Telnet 으로 접속한후 터미널화면에서 입력해야될 명령어입니다이때 ?(#)으로 시작되는 라인은 주석표시로 안내문구이므로 입력할 필요가 없으며 입력하더라도 실행되지 않습니다.

# PHP 실행파일이 존재하는지 확인합니다.

    => 주석표시로 다음에 나올 명령에 대한 안내입니다.

ls /usr/bin/php

    => 터미널화면에 복사후 붙여넣기나 직접 입력해야하는 명령입니다.

#result# /usr/bin/php

=> 쉘명령 실행후 화면상에 출력되는 결과물입니다.

 

 

4.    Apache + PHP + MySQL RPM 설치

CentOS, Fedora Core 등의 레드햇 계열의 최신 배포판을 사용할 경우 yum프로그램을 통해 아래 RPM 패키지들만 설치해두시면 저희 엔메일만이 아니라 향후 다른 웹프로그램을 사용할 때도 별다른 문제가 없으실 겁니다주의) 서버내에 APM이 이미 소스 컴파일로 설치되어 있다면,  RPM으로 중복 설치하시면 안됩니다.

예제) CentOS, Fedora Core

# Apache + PHP + MySQL 설치

yum -y install httpd mysql-server mysql php php-devel php-gd php-mbstring php-mysql php-pear

 

# Apache, MySQL 데몬 시작

# CentOS 6 일 경우.

/etc/init.d/httpd start

/etc/init.d/mysqld start

# CentOS 7 일 경우.

/usr/bin/systemctl start httpd.service

/usr/bin/systemctl start mariadb.service

 

# Apache, MySQL 데몬 부팅시 자동 실행

# CentOS 6 일 경우.

/sbin/chkconfig httpd on

/sbin/chkconfig mysqld on

# CentOS 7 일 경우.

/usr/bin/systemctl enable httpd.service

/usr/bin/systemctl enable mariadb.service

 

# mysql root 비밀번호 지정

mysqladmin password 비밀번호지정

 

# php.ini 파일 경로 확인

php -i|grep ini

 

# php.ini 에서 short_open_tag 값을 On 으로 변경.

vi /etc/php.ini

short_open_tag = Off

=>

short_open_tag = On

 

# PHP 확장자에 .htm, .html 추가

vi /etc/httpd/conf.d/php.conf

AddHandler php5-script .php

=>

AddHandler php5-script .php .htm .html

 

 

5.    편지함 백업/복구 관리에 필요한 유틸 설치

예제) CentOS, Fedora Core

# 편지함 백업/복구, DNS 테스트, SMTP 응답 테스트에 사용되는 유틸 설치

yum -y install zip unzip rdate bind-utils telnet

 

 

6.    자체 네임서버(DNS) 운영

자체 네임서버(127.0.0.1)의 경우 설치만 해두어도 캐싱네임서버로 사용할 수 있어 메일 송수신 속도향상에 도움이 됩니다.  서버내부에 네임서버가 설치되어 있지 않고 외부의 네임서버가 지정되어 있을 경우 DNS 질의를 외부서버로 던지게 되어 그만큼 속도가 느려지게 됩니다특히 데이콤(164.124.101.2), 코넷(168.126.63.1)처럼 많은 사용자가 몰리는 외부서버로 지정할 경우 해당 네임서버의 속도저하/장애에 따른 영향을 그대로 받게 됩니다따라서 아래처럼 네임서버 프로그램(bind)을 설치해서 첫번째 네임서버로 지정하는 것을 권장합니다.

예제) CentOS, Fedora Core

# bind 설치여부, 실행여부를 확인함.

rpm -qa|grep bind

#result# bind-9.3.2-2

 

# DNS 서비스 재시작

# CentOS 6 일 경우.

/etc/init.d/named restart

# CentOS 7 일 경우.

/usr/bin/systemctl restart named.service

 

# bind 가 없을 경우 설치, 시작, 부팅시 자동 시작 설정

yum -y install bind caching-nameserver

# CentOS 6 일 경우.

/etc/init.d/named start

/sbin/chkconfig named on

# CentOS 7 일 경우.

/usr/bin/systemctl start named.service

/usr/bin/systemctl enable  named.service

 

 

# 첫번째 네임서버를 자체네임서버로 지정.(첫번째 라인에 아래 내용추가)

vi /etc/resolv.conf

nameserver 127.0.0.1

 

 

7.    서버에서 사용중인 네임서버 확인

  Linux/Unix 에서 사용되는 네임서버는 보통 아래처럼 설정되어 있습니다첫 번째 네임서버를 먼저 사용하다가 응답이 없을 때 두 번째 네임서버를 사용하게 됩니다따라서 첫 번째 네임서버는 가급적 자체 네임서버(127.0.0.1), 해당 호스팅/ISP 업체의 네임서버를 등록하는 것이 좋습니다.

cat /etc/resolv.conf

#result# nameserver 127.0.0.1

#result# nameserver 164.124.101.2

#result# nameserver 168.126.63.1

 

등록된 네임서버가 제대로 응답하는지 다음처럼 확인해보시면 됩니다.

ex) nslookup 도메인주소 네임서버IP

nslookup passkorea.net 127.0.0.1

#result# Server:  127.0.0.1

#result# Address: 127.0.0.1#53

 

#result# Name: passkorea.net

#result# Address:  211.170.106.66

 

 

8.    표준 시간 동기화

메일 서버는 메일을 보낸시간/받는시간이 서버의 시간에 따라 기록되므로, 항상 표준 시간에 동기화 되어야 합니다.

- CentOS 5/6 버전일 경우, ntpd 설치해두면 자동으로 계속 동기화 되어 따로 신경쓸 필요가 없어집니다.

yum -y install ntp

# CentOS 6 일 경우.

/etc/init.d/ntpd start

/sbin/chkconfig ntpd on

# CentOS 7 일 경우.

/usr/bin/systemctl start ntpd.service

/usr/bin/systemctl enable  ntpd.service

ntpdate -d 0.centos.pool.ntp.org

date

 

- 다른 OS 일 경우, rdate ntpdate 동기화시킵니다.

rdate -s time.bora.net

ntpdate -u time.bora.net

[root@nbuilder tools]# /usr/sbin/hwclock --systohc

 

 

 

 

II.  설치

 

 

 

1.    PHP 경로 확인

php, pear, pecl 등의 실행파일이 /usr/bin/ 아래에 존재하거나 링크되어 있는지 확인해야 합니다Apache+PHP RPM 으로 설치했다면 해당 위치에 존재하지만 컴파일로 설치했을 경우 다음처럼 /usr/bin/ 아래로 링크를 걸어주어야 합니다.

# 파일이 존재하는지 확인

ls /usr/bin/php /usr/bin/pear /usr/bin/pecl /usr/bin/phpize

#result# ls: **** 그런 파일이나 디렉토리가 없음

 

# /usr/bin/php 가 존재하지 않을 경우 PHP가 설치된 디렉토리를 기준으로 심볼릭링크 생성.

ln -s /PHP_설치경로_직접입력/bin/* /usr/bin/

# sample) ln -s /usr/local/php/bin/* /usr/bin/

 

# 링크된 파일의 실행 테스트

/usr/bin/php -v

/usr/bin/pear config-show

 

   주의) 컴파일로 설치된 PHPRPM으로 설치된 PHP가 함께 설치되어 있을 경우 PHP 충돌로 인해 설치시 예기치 못한 문제가 발생할 수 있습니다.   따라서 반드시 2개 중 하나를 삭제해야 합니다.

# RPM으로 설치된 PHP가 있는지 확인.

rpm -qa|grep php

 

# 웹페이지의 phpinfo() 정보에서 보여지는 PHP 버젼, php.ini 경로가

# 다음처럼 쉘모드에서와 일치하는지 확인.

php -v
php -i|grep ini

 

 

2.    PHP 확장모듈 확인

앞선 설치 준비단계에서 언급되어 있는 Apache + PHP + MySQL 데몬의 설치가 완료된 상태에서 설치를 시작하셔야 합니다.

 

현재 운영중인 리눅스에 엔메일을 설치하려면 PHP의 경우에는 버전이 5.X 이상이어야 하고 mbstring, iconv 모듈이 필요합니다. 해당 모듈의 설치여부는 phpinfo() 정보를 출력하는 소스를 따로 만들어서 확인하거나 아래처럼 쉘스크립트로 확인이 가능합니다

php -m|grep mbstring

  #result# mbstring

php -m|grep iconv

  #result# iconv

 

# 해당 모듈이 설치되어 있을 경우에만 출력결과가 나옵니다.

 

모듈이 설치되어 있지 않을 경우 추가하는 방법은 다음과 같습니다.

 

1. PHP RPM으로 설치할 경우.(이미 설치된 경우도 동일)

rpm 패키지중 php-mbstring, php-iconv 찾아서 설치하시면 됩니다.

php-pecl-mailparse 가 없는 시스템은 차후 직접 설치하는 방법이 따로 설명되어 있습니다.

예제) CentOS, Fedora Core 의 경우 yum 으로 간단하게 설치가능.

yum -y install php-mbstring php-iconv

 

2. PHP를 소스 컴파일로 설치할 경우.

configure 옵션에 다음 내용을 추가하면 됩니다.

--with-iconv  --enable-mbstring --enable-mbregex

주의) PHP를 커맨드라인에서 실행하기 위해서는 컴파일시 --disable-cli 옵션을 넣지 않아야 합니다.

 

3. PHP를 소스 컴파일로 이미 설치해둔 경우.

컴파일시 사용한 소스 디렉토리로 이동해서 해당 모듈만 추가 설치하고, php.ini extension항목에 등록하면 됩니다.

예제) 컴파일한 소스가 /usr/src/php-4.4.1 에 있을 경우.(서버마다 경로가 다름)

# install iconv

cd /usr/src/php-4.4.1/ext/iconv

phpize

./configure

make

make install

 

# install mbstring

cd /usr/src/php-4.4.1/ext/mbstring

phpize

./configure

make

make install

 

# php.ini 경로 확인

php -i|grep ini

 

# modify php.ini

vi /usr/local/php/lib/php.ini

         extension=iconv.so

         extension=mbstring.so

 

# 설치된 모듈 확인

php -m

 

 

3.    MySQL 설정 변경

MySQL 설정 파일인 my.cnf 에서 [mysqld] 문구 다음에 max_allowed_packet=32M 값이 선언되어야 합니다만약 1M로 선언되어 있다면 32M로 수정해주시면 됩니다.

### CentOS 6 에서 MySQL 5 RPM으로 설치된 경우.

vi /etc/my.cnf

[mysqld]

max_allowed_packet=32M

/etc/init.d/mysqld restart

       관련 기술자료) http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

 

 

4.    기존 메일서비스(SMTP/POP3) 중지

설치시 엔메일용 SMTP/POP3 서비스를 실행하게 됩니다따라서 기존에 운영중이던 SMTP/POP3 서비스는 종료시키고 부팅시 자동 실행되지 않도록 조치하셔야 합니다.  그렇지 않을 경우 설치가 완료되어도 엔메일에서 메일을 받지 못하게 됩니다.

다음은 Linux 에서 일반적으로 많이 사용되는 sendmail, ipop3 데몬을 기준으로 한 것이며 시스템에 따라 postfix, qmail, courier-imap 등 다른 서비스가 사용하고 있을 수 도 있으니 미리 확인해보시기 바랍니다.

### CentOS 6 일 경우.

/sbin/chkconfig postfix off

/etc/init.d/postfix stop

### CentOS 7 일 경우.

/usr/bin/systemctl disable postfix.service

/usr/bin/systemctl stop postfix.service

 

### 나머지 OS 일경우, 각각의 실행중인 메일서비스를 찾아 정지시켜야 합니다.

# 부팅시 자동실행 방지.

/sbin/chkconfig sendmail off

/sbin/chkconfig ipop3 off

#/sbin/chkconfig postfix off

#/sbin/chkconfig courier-imap off

 

# 기존 메일서비스용 데몬 종료.

/etc/init.d/sendmail stop

/etc/init.d/xinetd reload

#/etc/init.d/postfix stop

#/etc/init.d/courier-imap stop

 

# 메일서비스 종료후 SMTP(25), POP3(110)포트에서 응답이 없는지 확인.

telnet 127.0.0.1 25

telnet 127.0.0.1 110

 

# 만약 25, 110 포트에서 응답이 있다면 기존 메일서비스가 종료된 것이 아니므로 재확인하셔야 합니다.

 

 

5.    일부 리눅스 배포판의 SELinux 중지

fedora, redhat enterprise SELinux 가 설치된 리눅스에서는 아래처럼 이 기능을 설치시 알 수 없는 문제가 발생하지 않습니다.

# 설정파일에서 옵션을 enforcing 에서 disabled 로 수정.

vi /etc/selinux/config

        SELINUX=enforcing

        =>

        SELINUX=disabled

 

# SELinux 재부팅하지 않고 즉시 중지

/usr/sbin/setenforce 0

 

# 만약 setenforce 가 없다면 서버를 재부팅해야 합니다.

 

 

6.    설치 프로그램 실행 (UTF-8 제품)

설치 프로그램을 다운받아서 원하는 디렉토리에 넣어두고 실행합니다이때 아파치 웹서버를 미리 실행해두어야 설치 프로그램에서 아파치 웹서버의 정보를 자동인식할 수 있게 됩니다자세한 내용은 설치 프로그램에서 나오는 안내문구를 보고 따라서 진행하시면 됩니다.

예제) /tmp 디렉토리에 넣어두었을 경우의 예제.

# 설치 프로그램을 서버에 FTP 등으로 업로드합니다.

wget http://passkorea.net/nmailphp/new/nmail-php-linux-3.0.tgz

 

# 압축을 해제합니다.

tar zxvf nmail-php-linux-3.0.tgz

 

# 설치 스크립트를 실행한 후 설치 완료나올때까지 지시대로 진행하시면 됩니다.

# 주의) 반드시 /usr/bin/php 위치에 php 실행파일이 존재해야 합니다.

 

/usr/bin/php nmail-php-3.0_install.php

 

참고) 설치 프로그램에서 한글이 깨져 보일 경우 아래처럼 한글코드를 지정후 재실행함.

# Linux

export LANG=ko_KR.utf8

 

# Solaris

#export LANG=ko

 

# FreeBSD

#export ko_KR.utf-8

 

/usr/bin/php nmail-php-3.0_install.php

 

 

7.    설치가 완료되면, 설치 프로그램 보관

설치 프로그램은 반드시 /home/nmail2/ 아래에 보관해두시기 바랍니다.  그래야 서버 이전/재설치 작업시 알맞은 설치 프로그램을 찾지 못해 시간을 낭비하는 일이 없습니다.

 

# 현재 디렉토리에 설치 프로그램이 존재하는지 확인합니다.

ls -l nmail-php-* nmail_dir.ini nmail_license_agree.ini

 

# 설치 프로그램을 /home/nmail2 로 이동합니다.

mv nmail-php-* nmail_dir.ini nmail_license_agree.ini /home/nmail2/

 

 

8.    Apache 가상호스트 설정

설치 완료시 마지막 화면에 아래처럼 Apache 가상호스트 설정방법에 대한 내용이 나옵니다해당 내용을 참고하셔서 설정파일을 적절히 수정후 Apache 재시작하시면 됩니다.

==============================================================================

= 엔메일 설치 작업이 완료되었습니다.

==============================================================================

이제 Apache 웹서버의 설정파일인 httpd.conf 에 가상호스트(혹은 앨리어스) 설정을 추가하고

Apache 웹서버를 재시작하면 웹메일을 사용하실 수 있게 됩니다.

  httpd.conf 추가해야할 내용)

    주의1) 서버에 따라 NameVirtualHost, VIrtualHost 항목은 다를 수 있으니 기존 설정을 확인하세요.

    주의2) ServerName DNS 설정에 따라 'mail'이라는 2차도메인이 붙지 않을 수 도 있으니

        DNS 서버관리자에게 문의하시기 바랍니다.

    주의3) VIrtualHost 가 없던 사이트에서 VIrtualHost 추가할 경우 기존 홈페이지까지 엔메일로 접근될 수 있습니다.

        따라서 기존 홈페이지의 VIrtualHost 는 따로 만들어주셔야 합니다.

 

vi /etc/httpd/conf/httpd.conf

 

### NmailPHP Virtual Host ###

 

# VirtualHost Enabled

NameVirtualHost *:80

 

# Nmail PHP - http://mail.YourDomain.com/

<VirtualHost *:80>

     ServerAdmin postmaster@YourDomain.com

     DocumentRoot "/home/nmail2/nmail"

     ServerName mail.YourDomain.com

     ServerAlias mail.*

     #ServerAlias mail.MultiDomain1.com mail.MultiDomain2.com

     ErrorLog logs/nmail2.error_log

     TransferLog logs/nmail2.access_log

     <Directory "/home/nmail2/nmail">

         Options None

         AllowOverride All

         AddDefaultCharset Off

<IfModule mod_authz_core.c>

           Require all granted

         </IfModule>

         <IfModule !mod_authz_core.c>

           Order allow,deny

           Allow from all

         </IfModule>

     </Directory>

</VirtualHost>

 

주의) 서버내에 기존에 운영중인 웹사이트가 있을 경우

Apache 가상호스트에 선언되지 않은 도메인으로 접속할 경우 첫번째 가상호스트 설정을 따르게 됩니다이로 인해 기존 웹사이트(www.YourDomain.com)용 가상호스트가 따로 선언되지 않은 상태에서 엔메일용 가상호스트를 추가하게 문제가 발생할 수 있습니다문제가 생기지 않도록 미리 기존 웹사이트에 맞는 가상호스트가 설정을 확인 후 추가하시는게 좋습니다.

 

주의) Apache 설정 중 다음 항목이 있다면 삭제 후 재시작해야 합니다그렇지 않으면 웹메일에서 한글이 깨질 가능성이 있습니다.

AddDefaultCharset UTF-8

=>

#AddDefaultCharset UTF-8

 

 

9.    Apache 앨리어스 설정

일반적인 경우처럼 http://mail.YourDomain.com 형태의 웹메일 주소를 사용할 경우에는 앨리어스설정을 따로 잡아줄 필요가 없습니다.   하지만 가상호스트설정을 사용하지 않고 http://YourDomain.com/webmail/ 형태로 사용하려면 앨리어스설정을 이용하시면 됩니다.

Apache 웹서버의 설정파일인 httpd.conf 에서 기존 Alias 옵션 아래에 엔메일 관련 Alias 추가후 웹서버를 재시작하면 됩니다.

# 기존 Alias 설정 다음에 추가

Alias /icons/ "/usr/local/apache/icons/"

 

# Nmail PHP - http://www.YourDomain.com/webmail/

Alias /webmail "/home/nmail2/nmail"

<Directory "/home/nmail2/nmail">

         Options None

         AllowOverride All

AddDefaultCharset Off

<IfModule mod_authz_core.c>

           Require all granted

         </IfModule>

         <IfModule !mod_authz_core.c>

           Order allow,deny

           Allow from all

         </IfModule>

</Directory>

 

 

10.방화벽 설정 확인

서버 OS의 기본 방화벽이나 서버 앞 단에 방화벽이 있을 경우, 다음 포트들을 오픈 해주셔야 합니다.

     TCP 25 메일 송수신용 (필수)

     TCP 80 웹메일 접속용

     TCP 110 아웃룩 등의 메일 클라이언트에서 메일 받기시 사용됨.

     TCP 587 아웃룩 등의 메일 클라이언트에서 메일 보내기시 사용됨.

* 메일 클라이언트에서 25 포트에 접근하는 것도 가능한, 일부 무선/해외 인터넷에서 25 포트가 차단된 경우에 사용됩니다.   이때 메일 클라이언트의 설정에서 SMTP 포트를 25에서 587 로 변경해서 보내기가 가능합니다.

       TCP 995 - 아웃룩 등의 메일 클라이언트에서 암호화된 메일 받기시 사용됨(TLS 통신).

 

# CentOS 6 일 경우.

vi /etc/sysconfig/iptables

# 기존 tcp 22 허용 라인 다음에 추가하면 됩니다.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT

/etc/init.d/iptables restart

# CentOS 7 일 경우.

firewall-cmd --permanent --zone=public --add-port=80/tcp

firewall-cmd --permanent --zone=public --add-port=25/tcp

firewall-cmd --permanent --zone=public --add-port=110/tcp

firewall-cmd --permanent --zone=public --add-port=587/tcp

firewall-cmd --permanent --zone=public --add-port=995/tcp

/usr/bin/systemctl restart firewalld

 

 

11.웹메일 접속

웹브라우저에서 설치한 주소( http://mail.YourDomain.com ) 로 접속하시면 됩니다.  [서버관리자]계정은 아이디는 postmaster 이며, 비밀번호는 설치시 입력한 비밀번호입니다.

 

 

12.멀티 도메인, 회원 추가

멀티 도메인은 [서버관리자]로 로그인후 [메일서버관리 - 도메인관리]에서 추가할 수 있으며 메일계정도 [메일서버관리 - 회원관리]에서 추가할 수 있습니다멀티 도메인의 경우 사용자가 접속한 웹페이지 주소(http://)에 따라 구분하여 엔메일 내부에서 자동 인식됩니다.

 

멀티 도메인 추가 작업 순서)

a.       웹메일 [메일서버관리]에서 도메인 및 회원 추가.

b.      아파치 웹서버 설정 확인.

- 앞서 설정해둔 가상호스트, 앨리어스의 경우 모든 도메인에 적용되므로 따로 작업   하실 필요가 없습니다.

c.       도메인의 DNS 서버에서 MX 레코드의 IP 를 메일서버로 변경.

 

기존 사용자의 일괄 추가 및 호스팅업체를 위한 도메인,회원추가용 스크립트가 제공됩니다.

cd /home/nmail2/tools/

./domain_add.php

         메일서버에 도메인을 추가하는 명령입니다.

         웹메일의 [메일서버관리-도메인관리]에서 추가하는 것과 동일합니다.

                  사용방법) ./domain_add.php "DOMAIN"

./mbr_add.php

         메일서버에 메일계정을 추가하는 명령입니다.

                  일반사용자 추가시) ./mbr_add.php "DOMAIN" "NAME" "USERID" "PASSWORD"

                  관리자 추가시    ) ./mbr_add.php "DOMAIN" "NAME" "USERID" "PASSWORD" "ADMIN"

 

 

13.TLS 통신을 위해 SSL 인증서 발급 적용 방법

a.   Openssl을 이용하여 개인키 생성.

yum install openssl

openssl genrsa 2048 > server.key

b.   CSR(Certificate Signing Request) 생성.

openssl req -new -key server.key -out cert.csr

 

Country Name (2 letter code) [AU]: (국가코드:KR)

State or Province Name (full name) [Some-State]: (:Seoul)

Locality Name (eg, city) []: (, )

Organization Name (eg, company) [Internet Widgits Pty Ltd]: (기관명)

Organizational Unit Name (eg, section) []: (조직명)

Common Name (eg, YOUR name) []: (도메인명)

Email Address []: (이메일)

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: (입력하지 않고 Enter)

An optional company name []:(입력하지 않고 Enter)

c.   인증서 발급 신청.

- SSL 인증서를 판매하는 기관에 신청

d.   발급받은 인증서와 개인키 파일을 /home/nmail2/MailRoot에 복사합니다.

- 개인키 : server.key

- 인증서 : server.cert

e.   /home/nmail2/MailRoot/server.tab 에서 아래 옵션을 변경합니다.

"EnableSMTP-TLS"  "0"

"EnablePOP3-TLS"  "0"

=>

"EnableSMTP-TLS"  "1"

"EnablePOP3-TLS"  "1"

f.   만약 개인키에 비밀번호가 걸려있을 경우에는 메일 엔진이 시작되지 않습니다. 아래와 같이 비밀번호를 해제해야 합니다.

openssl rsa -in server.key -out ssl_nopass.key

Enter pass phrase for server.key: 비밀번호 입력

g.   Xmail 서비스 재시작

 

 

III.         설치시 문제 해결

1.    PHP mailparse 모듈이 자동으로 설치되지 않는 경우. (컴파일 설치)

소스 컴파일을 하기 위해서는 gcc-c++등의 개발패키지가 필요하게 됩니다개발패키지가 없을경우 CentOS 등에서는 아래처럼 패키지관리자를 통해 추가하시면 됩니다.

yum install glibc-devel gcc-c++ make

 

소스를 다운받아 직접 컴파일해서 모듈을 설치하면 됩니다.

# PHP 7 일 경우

wge

tar zxvfp mailparse-3.0.2.tgz

cd mailparse-3.0.2

phpize

./configure

make

make install

 

# PHP 5 일 경우

wget http://www.passkorea.net/nmailphp/betapatch/mailparse-2.1.6.tgz

tar zxvfp mailparse-2.1.6.tgz

cd mailparse-2.1.6

phpize

./configure

make

make install

 

만약 make 시 에러가 발생한다면 아래처럼 유형에 따라 대응하시면 됩니다.

 

에러1)

ext/mbstring/libmbfl/mbfl/mbfilter.h: No such file or directory

# 다음처럼 소스에 포함된 libmfl 디렉토리를 PHP가 설치된 include 디렉토리를 찾아서

# 복사해넣으신후 재시도하시면 됩니다.

# 아래 경로는 서버에 따라 다를 수 있습니다.

 

# cp /usr/src/php-5.1.4/ext/mbstring/libmbfl /usr/local/php/include/php/ext/mbstring/

 

에러2)

mailparse-2.1.1/mailparse.c:34:2: error: #error The mailparse extension requires the mbstring extension!

# PHP mbstring 모듈을 별도로 추가하신 경우에 발생하는 문제입니다.

# 다음처럼 소스에서 문제의 라인들을 삭제 후 재시도하시면 됩니다.

 

vi mailparse-2.1.1/mailparse.c

  33~35 line)

#if !HAVE_MBSTRING

#error The mailparse extension requires the mbstring extension!

#endif

 

 

2.    메일엔진 소스 컴파일이 필요한 경우

레드햇 계열의 리눅스, 솔리리스 일부 버젼에 한해 메일엔진 바이너리를 제공하고 있습니다이로 인해 일부 OS에서는 설치프로그램에서 자동으로 찾지 못해 직접 소스 컴파일을 통해 사용하셔야 하는 경우가 있을 수 있습니다. 또한 메일엔진관련 이상 증상이 발견된다면 소스 컴파일을 통해 다시 설치하는 것을 권장해드립니다.

 

  소스 컴파일을 하기 위해서는 gcc-c++등의 개발패키지가 필요하게 됩니다개발패키지가 없을경우 CentOS 등에서는 아래처럼 패키지관리자를 통해 추가하시면 됩니다.

yum install glibc-devel gcc-c++ make

 

소스 컴파일 방법)

cd /home/nmail2/tools/mailserver/

tar zxvf xmail-1.27_20160407.tgz

cd xmail-1.27

 

# OS별 컴파일.(Linux 사용중일때는 Makefile.lnx 을 사용하면 됨)

make -f Makefile.lnx

#make -f Makefile.bsd

#make -f Makefile.sso

 

# 메일엔진 종료후 25번 포트가 응답이 없는 것을 확인함.

/etc/init.d/xmail stop

telnet 127.0.0.1 25

 

# 실행파일을 덮어씌움.

/bin/cp bin/* /var/MailRoot/bin/

 

# 메일엔진을 시작후 메일엔진 버젼이 "XMail 1.27 PassKorea160330"인 것을 확인함.

/etc/init.d/xmail start

telnet 127.0.0.1 25

 

 

 

3.    웹메일에서 받은 메일이 보이지 않는 경우

엔메일의 경우 빠른 처리를 위해 메일정보를 디비에 저장하게 됩니다그러나 설치시 문제가 있을 경우 디비에 저장하는 과정에서 오류가 발생할 수 있습니다이 경우 메일은 실제로 받았으므로 아웃룩에서 가져갈 수 있지만 웹메일에서만 보이지 않는 현상이 발생하게 됩니다

 

다음 각 단계별로 순서대로 테스트를 진행해보시면 됩니다만약 에러가 나온다면 에러메세지와 함께 저희 홈페이지( http://passkorea.net )로 문의를 주시면 됩니다.

 

1. 다음처럼 [ 메일데이타와 디비 동기화 작업 ]을 해보신 후 웹상에서 보여지는지 확인해보시기 바랍니다.

cd /home/nmail2/tools/

./mail_box_dbsync.php ALL

 

2. 웹상에서 메일이 보여진다면 메일을 받은 후 디비에 넣는 과정에서 문제가 발생했을 수 있으니 아래처럼 오늘 날짜의 로그가 남아있는지 확인해보시기 바랍니다.  

tail /var/MailRoot/logs/filters-201512020000

 

3. 아래와 동일하게 쉘스크립트를 실행해보시고 에러메세지가 나온다면 알려주시기 바랍니다. /home/nmail2 가 아닌 다른 곳에 설치하더라도 /home/nmail2 심볼릭링크가 걸리도록 되어 있습니다.   반드시 아래처럼 전체경로를 모두 입력해서 실행해보시기 바랍니다.

Linux OS) /home/nmail2/nmail/filter.sh.php

Solairs OS) /export/home/nmail2/nmail/filter.sh.php

정상적인 실행결과)

                  [root@ibin2 /]# /home/nmail2/nmail/filter.sh.php

                  올바른 경로로 접근하여 주십시오.

 

4. PHP 버젼 확인시 아래처럼 'ionCube PHP Loader' 모듈이 등록된 상태로 나와야 합니다.

/usr/bin/php -v

         PHP 5.4.16 (cli) (built: Jun 23 2015 21:17:27)

         Copyright (c) 1997-2013 The PHP Group

         Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

         with the ionCube PHP Loader + Intrusion Protection from ioncube24.com (disabled) v5.0.7, Copyright (c) 2002-2015, by ionCube Ltd.

 

5. 4번 과정에서 모듈이 등록되지 않았다면 웹서버와 쉘모드의 PHP 버젼, php.ini 경로를 비교해보야 합니다.

   웹서버) 웹메일의 [메일서버관리 - PHPINFO]에서 확인.

   쉘모드) /usr/bin/php -v; /usr/bin/php -i|grep ini

 

   A) PHP 버젼이 다른 경우.

PHP 2개 이상 설치된 경우로써 사용하지 않는 PHP제거후 /usr/bin/php 에 사용하는 PHP의 실행파일을 복사해 넣어야 합니다.

 

   B) PHP 버젼이 같지만 php.ini 경로가 다른 경우

안녕리눅스 등 일부 배포판에서는 웹서버와 쉘모드에서의 php.ini 경로가 다음처럼 다른 경우가 있습니다. 이 경우 웹서버에서 사용되는 php.ini 의 마지막에 추가된 엔메일 관련 설정을 그대로 복사하셔서 쉘모드에서 사용되는 php.ini 의 마지막에 추가하신 후 4번 과정으로 확인하시면 됩니다.


 

 

 

IV.        메일서버 관리 안내

 

 

 

※ 메일서버 관리에 필요한 도움말을 정리해놓았습니다설치하신 웹메일의 [도움말 >> 메일서버관리 FAQ]에 등록되어 있습니다아래 데모사이트에서 미리 확인해보실 수 도 있습니다.

http://nm3.passkorea.net/help.php?id=SAFAQ

 

※ 목차 미리보기

메일서버 시작과 종료, 사용 포트(방화벽설정)
메일서버 설정 안내
멀티도메인 추가 안내
데이타 백업 안내
SMTP RELAY(외부 메일발송 권한) 설정

편지쓰기시 최대 첨부파일 용량 조절 안내
메일클라이언트(아웃룩 등)사용시 인증방법에 대한 안내

메일 파일과 디비의 동기화 안내
방화벽 사용시 유의사항
서버 이전시 유의사항
디비에 저장된 데이타를 임의로 수정하고자 할때의 유의사항

 

 

V.  POP3(아웃룩 ) 이용안내

 

 

 

아웃룩 등의 메일클라이언트에서 메일을 보내고 받기 위한 사용방법 및 문제 발생시 해결책을 정리해놓았습니다. 설치하신 웹메일의 [POP3 이용안내]에 등록되어 있습니다아래 데모사이트에서 미리 확인해보실 수 도 있습니다.

http://nm3.passkorea.net/help.php?id=POP3

 

※ 목차 미리보기

1. POP3/SMTP 설정방법 안내.

2. 설정방법 따라하기 - Office Outlook

3. 설정방법 따라하기 - Outlook Express

4. 아웃룩 등의 메일 프로그램과 웹메일을 동시에 사용할 경우의 유의사항.

5. 아웃룩 등의 메일 프로그램만 사용할 경우의 메일 용량 초과 가능성.

 

 

 

 

 

 

 

 

 

 

 

 

 

VI.        리턴메일 분석 안내

 

 

※ 메일 송수신과정에서 발생하는 리턴메일(송수신 에러에 대한 메세지)에 대해 에러별로 원인 및해결책을 정리해놓았습니다. 설치하신 웹메일의 상단메뉴중 [리턴메일 분석]에 등록되어 있습니다아래 데모사이트에서 미리 확인해보실 수 도 있습니다.

http://nm3.passkorea.net/help.php?id=RETURNMAIL

 

※ 목차 미리보기

일시적인 전송 실패
    - 417 Temporary delivery error
    - The maximum number of delivery attempts has been reached
    - End of socket stream data
    - Invalid server address
    - Bad server response
받는사람이 존재하지 않는 경우
    - 550 User unknown
    - 550 Mailbox unavailable
    - 550 5.1.1 No such user
    - 554 delivery error: dd This user doesn't have a yahoo.co.kr account (userid@domain.com) [-5] - mta114.mail.krs.yahoo.com
받는사람이 사용중지된 경우
    - 550 Account disabled
    - 550 5.1.1 Inactive mbox
    - 550 5.1.1 Suspended user
    - 554 delivery error: dd Sorry your message to userid@domain.com cannot be delivered. This account has been disabled or discontinued [#102]. - mta115.mail.krs.yahoo.com
받는사람의 메일용량이 초과된 경우
    - 552 Requested mail action aborted: exceeded storage allocation - <userid@domain.com>
    - The recipient's mailbox is full
받는사람의 스팸설정(수신거부) 의해 차단된 경우
    - 550 You are registered as spammer (by user's reject list)
    - 554 5.0.0 Service unavailable (userid: mail is denied, by spam filter)
메일발송권한이 없거나 상대방 메일서버 설정 문제
    - 550 Relay denied
    - 554 Relay operation rejected
    - 550 5.7.1 Unable to relay for userid@domain.com
대량 메일 발송으로 인해 대형포털로부터 IP 차단된 경우
    - 550 5.7.1 <userid@domain.com>... Error.your access was denied.? Since you sent too many e-mails,you are not allowed to send more e-mails within 24 hours.After 24 hours,you can send e-mails as usual.If you did not send any e-mails,which is considered as a spam,you'd better register
    - 421 4.3.2 Your IP(111.112.113.114) is filtered and this connection will be closed. You must register your IP to http://realip.naver.com
    - 421 4.3.1 You send too many messages.
    - 5.1.0 - Unknown address error 550-'Transaction failed. (SPAM_SUSPECT:IP_CONTROL) (http://cleanip.paran.com)'
    - 451 mta113.mail.krs.yahoo.com Resources temporarily unavailable.
Please try again later [#4.16.5].
RBL 의해 차단된 경우
    - 421 4.3.2 Your ip is filtered by RBL (http://realip.naver.com/rbl/rblinfo.html)(IP:111.112.113.114)(Caues:http://dsbl.org/listing?111.112.113.114)
    - 553 5.3.0 ... Rejected - see http://www.mail-abuse.org/rbl/
    - 553-mail rejected because your IP is in DUL. See http://www.mail-abuse.com/enduserinfo.html
상대방 메일서버에서 스팸으로 인식해 차단된 경우
    - 553 Blocked for spam
    - 550 5.5.0 Your message was rejected.
상대방 메일서버에서 바이러스로 인식해서 차단된 경우
    - 550 Virus in your mail!!!
첨부파일에 실행파일을 첨부할 없는 경우 - 구글
    - 552 5.7.0 Illegal Attachment 36si248323nzk+I9:I15
받는사람과 보낸사람에 문제가 있어 리턴메일이 반복되는 경우
    - Mail loop detected
받는 메일서버에서 허용하는 최대메일크기를 초과한 경우
    - Message size excedes the server limit