메일 서버 구축(PostfixAdmin 설정)

11441 단어 postfixpostfixadmin

검증 환경



Amazon EC2에 2014년 11월 구축
centos version 6.5 64bit
postfix-2.6.6
PHP 버전 5.3.3
Apache/2.2.15 (CentOS)
mysql Ver 14.14 Distrib 5.1.73
Postfixadmin 2.92

Postfix는 설치되었습니다.

SELINUX 비활성화



다음 구성 파일을 수정합니다.

/etc/selinux/config
# SELINUX=enforcing
SELINUX=disabled 

다시 시작하고 SELINUX가 비활성화되어 있는지 확인합니다.

check
getenforce
> Disabled

Postfixadmin 설치



Postfixadmin이란?



Postfix와 연계하여 웹 화면에서 Virtual Domain 설정이나 이메일 주소 추가 등을 할 수 있는 툴입니다.

설정



시작하려면 Posfixadmin을 실행하기 위해 apache를 설치하고 서비스를 시작합니다. Postfixadmin은 PHP를 사용하기 위해 설치합니다.
yum install httpd php
service httpd start
chkconfig httpd on

웹에 액세스할 수 있도록 iptables를 중지합니다.
chkconfig iptables off
service iptables stop
chkconfig ip6tables off
service ip6tables stop

localhost에 액세스하여 확인합니다.

check
curl http://localhost 

Postfixadmin을 다운로드하여 설치합니다.
wget http://nchc.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.92.tar.gz
tar zxvf postfixadmin-2.92.tar.gz
mv postfixadmin-2.92 /var/www/html/postfixadmin
vi /etc/httpd/conf/httpd.conf 합니다./var/www/html 아래에서 PHP를 실행할 수 있도록 ExecCGI를 추가합니다.

/etc/httpd/conf/httpd.conf
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# ( 略 )
# for more information.
#
#    Options Indexes FollowSymLinks
    Options Indexes FollowSymLinks ExecCGI


http://localhost/postfixadmin/setup.php 로 이동합니다.
다음 오류 메시지에 따라 구성 파일을 수정합니다.

Please edit config.inc.php - change $CONF['configured'] to true after setting your database settings
cd /var/www/html/postfixadmin
cp config.inc.php config.inc.php.org
vi config.inc.php

이하 일부 변경 부분 주변만 발췌합니다.

/var/www/html/postfixadmin/config.inc.php
/*****************************************************************
 *  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 * You have to set $CONF['configured'] = true; before the
 * application will run!
 * Doing this implies you have changed this file as required.
 * i.e. configuring database etc; specifying setup.php password etc.
 */
// $CONF['configured'] = false;
$CONF['configured'] = true;

// In order to setup Postfixadmin, you MUST specify a hashed password here.
// To create the hash, visit setup.php in a browser and type a password into the field,
// on submission it will be echoed out to you as a hashed value.
// $CONF['setup_password'] = 'changeme';
$CONF['setup_password'] = 'test!123';

// Language config
// Language files are located in './languages', change as required..
// $CONF['default_language'] = 'en';
$CONF['default_language'] = 'ja';

// Database Config
// mysql = MySQL 3.23 and 4.0, 4.1 or 5
// mysqli = MySQL 4.1+
// pgsql = PostgreSQL
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'test!123';
$CONF['database_name'] = 'postfix';

// Site Admin
// Define the Site Admin's email address below.
// ...
$CONF['admin_email'] = '[email protected]';

// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Examples:
//   YES: /usr/local/virtual/domain.tld/[email protected]
//   NO:  /usr/local/virtual/[email protected]
$CONF['domain_path'] = 'YES';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Examples:
//   YES: /usr/local/virtual/domain.tld/[email protected]
//   NO:  /usr/local/virtual/domain.tld/username
// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.
$CONF['domain_in_mailbox'] = 'NO';

// Default Domain Values
// Specify your default values below. Quota in MB.
$CONF['aliases'] = '100';
$CONF['mailboxes'] = '100';
$CONF['maxquota'] = '300';

// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';



기본 quota는 10MB와 POP로도 너무 적기 때문에 100MB에.

암호 관계에 대한 보충입니다. 기본적으로 DB는 암호화되어 저장됩니다. 또한 암호 정책이 설정되었습니다. 설정 변경으로 비밀번호 자동 생성 및 관리 화면에서 볼 수 있습니다.

/var/www/html/postfixadmin/config.inc.php
// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
// md5 = md5 sum of the password
// system = whatever you have set as your PHP system default
// cleartext = clear text passwords (ouch!)
// mysql_encrypt = useful for PAM integration
// authlib = support for courier-authlib style passwords
// dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5
//   (WARNING: don't use dovecot:* methods that include the username in the hash - you won't be able to login to PostfixAdmin in this case)
$CONF['encrypt'] = 'md5crypt';

// In what flavor should courier-authlib style passwords be encrypted?
// md5 = {md5} + base64 encoded md5 hash
// md5raw = {md5raw} + plain encoded md5 hash
// SHA = {SHA} + base64-encoded sha1 hash
// crypt = {crypt} + Standard UNIX DES-encrypted with 2-character salt
$CONF['authlib_default_flavor'] = 'md5raw';

// Password validation
$CONF['password_validation'] = array(
#    '/regular expression/' => '$PALANG key (optional: + parameter)',
    '/.{5}/'                => 'password_too_short 5',      # minimum length 5 characters
    '/([a-zA-Z].*){3}/'     => 'password_no_characters 3',  # must contain at least 3 characters
    '/([0-9].*){2}/'        => 'password_no_digits 2',      # must contain at least 2 digits
);

// Generate Password
// Generate a random password for a mailbox or admin and display it.
// If you want to automagically generate passwords set this to 'YES'.
$CONF['generate_password'] = 'NO';

// Show Password
// Always show password after adding a mailbox or admin.
// If you want to always see what password was set set this to 'YES'.
$CONF['show_password'] = 'NO';




EXECCGI에서 CGI 실행을 허용합시다.
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
#    Options Indexes FollowSymLinks
    Options Indexes FollowSymLinks ExecCGI

다시 http://localhost/postfixadmin/setup.php 로 이동합니다.



몇 가지 오류가 있다고 생각하므로 수정합니다.

Error Smarty template ...

템플릿 파일의 저장 위치를 ​​쓸 수 있도록 액세스 권한을 변경합니다.
chmod 777 /var/www/html/postfixadmin/templates_c/


Error There is no database support ...

Mysql을 설치하고 시작합니다.
yum -y install mysql-server php-mysql
service mysqld start
chkconfig mysqld on
service httpd restart

Error: Can't connect to database

mysql에 로그인하여 Postfixadmin 데이터베이스와 사용자를 만듭니다. 사용자는 postfix 데이터베이스에 로컬 호스트에서만 권한을 부여하고 flush 문으로 액세스 권한 설정을 반영합니다.
mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g. 
...
mysql>
mysql> create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'postfix'@'localhost' identified by 'test!123';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on postfix.* to 'postfix' identified by 'test!123';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

Error: Depends on: multibyte string - NOT FOUND
Warning: Depends on: IMAP functions - NOT FOUND

php 모듈을 넣습니다. 
yum -y install php-mbstring php-imap
service httpd restart

다시 액세스하면 데이터베이스와 테이블이 만들어집니다.

Everything seems fine... attempting to create/update database structure
Updating database:
- old version: 0; target version: 1685
mysql -u postfix -p
Enter password: test!123
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> use postfix;
mysql> show tables;
+-----------------------+
| Tables_in_postfix     |
+-----------------------+
| admin                 |
| alias                 |
| alias_domain          |
| config                |
| domain                |
| domain_admins         |
| fetchmail             |
| log                   |
| mailbox               |
| quota                 |
| quota2                |
| vacation              |
| vacation_notification |
+-----------------------+
13 rows in set (0.00 sec)




Setup password 는 test!123 $CONF['setup_password'] 에서 설정한 것입니다. 관리자는 포스트 마s r @ 에어 mpぇ. 이 m 암호는 여기 postfix! 123입니다.

Setup password not specified correctly
If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set
$CONF['setup_password'] = > '2c2bdf2f6bab1166db15bee22b2a3d63:b2ed1ede7e2a64eb6af69d1e89bd25201ad8bad0';

와 나오므로 $CONF['setup_password'] 를 수정합니다.

/var/www/html/postfixadmin/config.inc.php
// In order to setup Postfixadmin, you MUST specify a hashed password here.
// To create the hash, visit setup.php in a browser and type a password into the field,
// on submission it will be echoed out to you as a hashed value.
// $CONF['setup_password'] = 'changeme';
//$CONF['setup_password'] = 'test!123';
$CONF['setup_password'] = '2c2bdf2f6bab1166db15bee22b2a3d63:b2ed1ede7e2a64eb6af69d1e89bd25201ad8bad0';


http://hogehoge/postfixadmin/
에 접속해 로그인 할 수 있으면 성공입니다.

좋은 웹페이지 즐겨찾기