Установка почтового сервера на MTA Postfix

Автор AlfaStriker, 30 Ноября 2013, 13:03

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

AlfaStriker

30 Ноября 2013, 13:03 Последнее редактирование: 30 Ноября 2013, 13:21 от AlfaStriker
В данном посте описан процесс установки почтового сервера на основе MTA Postfix. В качестве платформы будет использована CentOS версии 6.4 x32.
Для полноценной работы понадобятся дополнительные пакеты, такие как: Dovecot v2, MySQL, Postgrey, ClamAV.

Введение
Почтовая переписка важный инструмент взаимодействия сотрудников компании приминительно к корпоративному сектору. Сейчас практически каждая уважаемая себя компания имеет свой почтовый сервер.
Плохим тоном считается использования публичных почтовых служб. У клиентов данной компании и партнеров может сложится плохое впечатление о фирме, если они увидят адрес известного почтового сервера (mail.ru, yandex.ru, gmail.com и т.д.)

Преимущества Postfix:

       
  • Быстрый и безопасный

  •    
  • Модульная архитектура

  •    
  • Бесплатный

Минусы:

       
  • Сложная установка и настройка по сравнению с Windows решениями.

  •    
  • Требуется знать основы Linux


Давайте разберем зачем нам столько пакетов и зачем они используются:

       
  • Postfix - будет заниматься отправкой и получением писем от других почтовых серверов

  •    
  • Dovecot - занимается доставкой почты от почтовых клиентов к Postfix, а также получением почты почтовыми клиентами от Postfix

  •    
  • MySQL - в базе MySQL будут содержаться такие данные как наш домен company.kz, имена почтовых учетных записей, пароли и т.д.

  •    
  • Postgrey - эффективный  спам фильтр, который будет отсеивать спам не создавая большой вычислительной нагрузки на сервер.

  •    
  • ClamAV и ClamSMTP - это антивирус задача которого проверка почтовых сообщений на предмет вирусов]

  •    
  • PostfixAdmin - веб интерфейс для администратора почтового сервера который позволяет управлять почтовым сервером, такие операции как заведение доменов, почтовых учетный записей, смена паролей производятся именно в нем.

  •    
  • RoundCube - веб интерфейс для пользователей почтового сервера, этот интерфейс позволяет работать с почтовым ящиком. Пользователь в нем просматривает почтовые сообщения, отправлять письма и т.д.



Краткое содержание поста:
1. Настройка сетевого адаптера
2. Установка MySQL и создание базы
3. Установка и настройка Postfix
4. Установка и настройка Dovecot
5. Установка Postgrey
6. Установка ClamAV
7. Установка PostfixAdmin и Apache
8. Настройка DNS сервера
9. Настройка PostfixAdmin
10. Установка и настройка RoundCube Web Mail
11. Настройка фаерволла iptables

Домен: company.kz
Имя хоста почтового сервера: mail.company.kz
IP адрес почтового сервера: 217.15.175.51

Если у вас другой домен и имя хоста, а также IP адрес сервера - поменяйте их на свои в конфигах!

Начинаем установку, я надеюсь что вы уже установили операционную систему CentOS 6.4 x32 (minimal или desktop) на ваш сервер. Если это не так, закачайте установочный образ отсюда: http://mirror.neolabs.kz/centos/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1.iso, проинсталируйте систему и продолжайте дальше, продвигаясь последовательно с 1-го раздела содержания по 12-й.


Обычно после установки операционной системы, системный администратор настраивает сетевой адаптер, чтобы сервер стал доступным в сети и смог обмениваться информацией с другими компьютерами. Поэтому начнем нашу настройку почтового сервера с сетевого адаптера, сделаем его видимым в сети.

1. Настройка сетевого адаптера
Наш сервер имеет всего один сетевой адаптер, после установки CentOS, настройки этого адаптера хранятся в файле /etc/sysconfig/network-scripts/ifcfg-eth0.
По умолчанию этот файл содержит следующие настройки
Цитировать# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="yes"
ONBOOT="no"

Следует дописать в этот файл дополнительные настройки, подправим содержимое этого файла:
Цитировать# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="no"
ONBOOT="yes"
GATEWAY=217.15.175.49
IPADDR=217.15.175.51
NETMASK=255.255.255.248



Если у вас провайдер Intelsoft, вам должны выдать примерно следующие IP адреса:


IP адрес компьютера = 217.15.175.51
Адрес шлюза (GATEWAY)  = 217.15.175.49
Сетевая маска (NETMASK) = 255.255.255.248
Широковещательный адрес (BROADCAST) = 217.15.175.55
Первичный DNS сервер провайдера: 217.15.178.2
Вторичный DNS сервер провайдера: 217.15.178.4



Перезапустим сетевую службу:
Цитировать# service network restart

Вписываем наш домен и адреса DNS серверов:
Цитировать# vi /etc/resolv.conf

search company.kz
nameserver 127.0.0.1            // адрес обратной петли, это ускорит работу DNS
nameserver 217.15.175.51     //Это наш DNS сервер для зоны company.kz
nameserver 217.15.178.2      //Первичный DNS провайдера
nameserver 217.15.178.4      //Вторичный DNS провайдера

Здесь IP адреса:
217.15.175.51 - это IP адрес нашего почтового сервера, он также будет выступать в роли DNS сервера
217.15.178.2    - IP адрес первичного сервера DNS сервера провайдера
[size=78%]217.15.178.4[/size][/size][size=78%] [/size][/size][size=78%]  - IP адрес вторичного DNS сервера провайдера[/size]
Перезапустим сетевую службу, чтобы внесенные нами изменения вступили в силу:
# service network restart
Проверьте, ваш сервер должен иметь выход Интернет:
# ping google.ru

2. Установка MySQL и создание базы
# yum install mysql mysql-server mysql-devel -y
Ставим демон (службу) в автозагрузку:
# chkconfig --level 35 mysqld on
Запускаем демон СУБД MySQL:
# service mysqld start
Ставим пароль доступа к СУБД MySQL:
# /usr/bin/mysql_secure_installation
Заходим в консоль MySQL для создания почтовой базы "mail":
# mysql -u root -p
Цитироватьmysql>  Enter password: *****
mysql>  CREATE DATABASE mail;
mysql>  GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' IDENTIFIED BY 'password';
mysql>  quit

3. Установка и настройка Postfix
# yum install postfix pam  mod_ssl  openssl crypto-utils mc system-config-firewall-tui setuptool wget -y
На всякие пожарные, сохраним оригинальный конфиг файл:
# mv /etc/postfix/main.cf /etc/postfix/main.cf.original
Создадим свой:
# vi /etc/postfix/main.cf

Цитироватьsoft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mail.company.kz
mydomain = company.kz
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
#local_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains =
#always_bcc = backup9@company.kz # Ящик для архива
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
virtual_mailbox_domains = mysql:$config_directory/sql/vdomains.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
virtual_alias_maps = mysql:$config_directory/sql/valias.cf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
smtpd_restriction_classes = OnlyFromMyUsers
OnlyFromMyUsers = permit_mynetworks,
    permit_sasl_authenticated,
    reject
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_authenticated_sender_login_mismatch,
    reject_unauth_destination,
    check_policy_service unix:/var/spool/postfix/postgrey/socket,
    reject_non_fqdn_recipient,
    reject_unauthenticated_sender_login_mismatch,
    reject_invalid_hostname,
    reject_unknown_recipient_domain,
    reject_unknown_client,
    reject_unlisted_recipient,
    reject_unverified_recipient,
    reject_unauth_pipelining,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client sbl-xbl.spamhaus.org,
    permit
smtpd_client_restrictions =
    reject_unauth_pipelining,
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unknown_client_hostname,
    permit
smtpd_helo_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_invalid_hostname,
    reject_invalid_helo_hostname,
    reject_unknown_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname,
    permit
smtpd_sender_restrictions =
    check_sender_access hash:/etc/postfix/access_sender
    reject_authenticated_sender_login_mismatch,
    reject_unauthenticated_sender_login_mismatch,
    permit_sasl_authenticated,
    reject_sender_login_mismatch
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    permit
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
message_size_limit = 43000000
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 6
smtpd_client_connection_rate_limit = 6
smtpd_client_message_rate_limit = 6
smtpd_client_recipient_rate_limit = 20


Этот листинг содержит полный готовый конфиг для запуска Postfix. Давайте добавим запретим отправлять с нашего домена кому попало, создадим файл /etc/postfix/access_sender в который поместим имя нашего домена[/color]:
[/size][/font]
# vi /etc/postfix/access_sender
Цитироватьcompany.kz OK

Сохраняем файл.
И вводим следующие команды:
# postmap /etc/postfix/access_sender# service postfix reload
Теперь давайте создадим пользователя, под которым будет работать Postfix. Если пользователь создан, ID  можно взять с файла /etc/passwd, а ID группы хранится в  /etc/groups.  Так как у нас нет данного пользователя, создадим его:
# useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c Virtual vmail
Тут мы создали нового пользователя vmail c идентификатором ID - 1150, добавили его в группу mail. Созданный пользователь имеет право на папку /var/vmail, при этом он больше ни где не используется. При входе в систему его не будет, то есть ему запрещено входить в систему как обычный пользователь (nologin).
# mkdir -p -v /var/vmail# chmod 770 -R /var/vmail# chown vmail:mail /var/vmail
Тут мы для корректной работы Postfix, создали каталог почтовых сообщений /var/vmail/, куда будет попадать почтовая переписка (сообщения). Postfix все ваши сообщения будет складывать их туда.
# setup
ЦитироватьFirewall Configuration -> Firewall Enabled -> Убираем галочку

Здесь мы отключи встроенную цепочку правил фаерволла (RH-Input)
Отключаем SELINUX:
# vi /etc/selinux/config
Находим строчку:
ЦитироватьSELINUX=enforcing

Приводим ее к виду:
ЦитироватьSELINUX=disabled

Встроенная цепочка и SELINUX  иногда мешают нормальной работе программ.  Поэтому мы отключили их.

Создадим дополнительные конфигурационные файлы, которые указаны в /etc/postfix/main.cf, эти файлы отвечают за обращение к базе данных MySQL:
# mkdir /etc/postfix/sql# vi /etc/postfix/sql/vdomains.cf
Цитироватьuser = postfix
password = password
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
# vi /etc/postfix/sql/vmailbox.cf
Цитироватьuser = postfix
password = password
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'
# vi /etc/postfix/sql/valias.cf
Цитироватьuser = postfix
password = password
hosts = localhost
dbname     = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'


4. Установка и настройка Dovecot
# yum install dovecot dovecot-mysql -y
Чтобы Dovecot служил локальным транспортом, допишем следующие строчки в файл /etc/postfix/master.cf
# vi /etc/postfix/master.cf
Цитироватьdovecot    unix    -    n    n    -    -    pipe
             flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)


Сохраним оригинальный конфиг файл dovecot.conf
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
Создаем файл /etc/dovecot/dovecot.conf
# vi /etc/dovecot/dovecot.conf
Вставим туда следующие настройки:
Цитировать# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.4 (Final) ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login cram-md5
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
ssl = no
first_valid_uid = 1150
last_valid_uid = 1150
log_timestamp = %Y-%m-%d %H:%M:%S
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%u
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
user = postfix
group = postfix
mode = 0660
}
unix_listener auth-master {
user = vmail
group = mail
mode = 0660
}
unix_listener auth-userdb {
user = vmail
group = mail
mode = 0660
}
#user=root
}
service imap-login {
executable = /usr/libexec/dovecot/imap-login
inet_listener imap {
address = *
port = 143
}
}
service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
address = *
port = 110
}
}
service pop3 {
executable = /usr/libexec/dovecot/pop3
}
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = admin@сcompany.kz
}

Теперь создайте файл /etc/dovecot/dovecot-sql.conf
# vi /etc/dovecot/dovecot-sql.conf
Внутри него поместите:
Цитироватьdriver = mysql
connect = host=localhost dbname=mail user=postfix password=password
default_pass_scheme = CRAM-MD5
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'


5. Установка Postgrey
Подключим необходимый репозитарий:
# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
Теперь установим Postgrey:
# yum install postgrey -y

6. Установка ClamAV
# yum remove rpmforge-release -y# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm# yum install clamav clamav-server clamsmtp -y
Обновляем базы:
# freshclam -v
Устанавливаем автообновление баз:
# freshclam -d# mv /etc/clamsmtpd.conf /etc/clamsmtpd.conf.orig# vi /etc/clamsmtpd.conf
ЦитироватьOutAddress: 10026
        TimeOut: 180
        KeepAlives: 0
        XClient: on
        Listen: 127.0.0.1:10025
        ClamAddress: /var/run/clamav/clamd.sock
        Header: X-Virus-Scanned: ClamAV using ClamSMTP
        TempDirectory: /var/tmp
        Action: drop
        Quarantine: on
        User: clam
# chown clam:mail -R /var/run/clamd.clamsmtp/# chown clam:clam -R /var/lib/clamd.clamsmtp

Добавляем в master.cf строчки:
# vi /etc/postfix/master.cf
Цитироватьscan unix - - n - 16 smtp -o smtp_send_xforward_command=yes
127.0.0.1:10026 inet n - n - 16 smtpd
             -o content_filter=
             -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
             -o smtpd_helo_restrictions=
             -o smtpd_client_restrictions=
             -o smtpd_sender_restrictions=
             -o smtpd_recipient_restrictions=permit_mynetworks,reject
             -o mynetworks_style=host
             -o smtpd_authorized_xforward_hosts=127.0.0.0/8


7. Установка PostfixAdmin и Apache
Установим зависимости для Postfixadmin:
# yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli
 
Скачаем Postfixadmin и настроим его:
# cd /var/www/html# wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz/download# tar -xvzf postfixadmin-2.3.6.tar.gz# mv postfixadmin-2.3.6/ postfixadmin# cd  postfixadmin
Открываем файл /var/www/html/postfixadmin/config.inc.php и меняем ниже приведенные строчки:
# vi /var/www/html/postfixadmin/config.inc.php
В этом файле находим строчки которые внизу и меняем их значение на следующие:
Цитировать$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'mail';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['emailcheck_resolve_domain']='YES';

Ставим все службы в автозагрузку:
# chkconfig --level 35 mysqld on# chkconfig --level 35 dovecot on# chkconfig --level 35 postfix on# chkconfig --level 35 httpd on# chkconfig --level 35 postgrey on# chkconfig --level 35 clamd on# chkconfig --level 35 clamsmtpd on# chkconfig --level 35 saslauthd on

8. Настройка DNS сервера
Для того чтобы протестировать почтовый сервер, установите пакет Bind. Установка Bind  позволить настроить DNS сервер. После установки Bind, станет доступна служба named - отвечающая за функции DNS сервера.
И так, первым делом проверяем наш файл /etc/resolv.conf:
Цитироватьsearch company.kz
nameserver 127.0.0.1
nameserver 217.15.175.51     //Первичный DNS
nameserver 217.15.178.2   //Вторичный DNS

Мы вписали в этот файл два DNS сервера. Первый адрес - это будет наш сервер DNS сервер, второй адрес - провайдерский DNS.
Теперь самое главное, установим пакет Bind:
# yum install bind -y
Впишем имя хоста:
# vi /etc/sysconfig/network
ЦитироватьNETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mail.company.kz
# vi /etc/hosts
Цитировать217.15.175.51 mail.company.kz mail

Удаляем Network Manager (NM):
# service NetworkManager stop# chkconfig NetworkManager off# yum remove dnsmasq -y# service network restart# vi /etc/resolv.conf
Цитироватьsearch company.kz
nameserver 127.0.0.1
nameserver 217.15.175.51
nameserver 217.15.178.2

Здесь IP адреса:
217.15.175.51 - наш DNS сервер
217.15.178.2 - IP адрес DNS сервера провайдера
Сохраняем на всякие пожарные основной конфигурационный файл демона "named":
# mv /etc/named.conf /etc/named.conf.orig
Создаем чистый конфиг файл с настройками внизу:
# vi /etc/named.conf
Цитировать//
Цитировать
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named( B) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
        listen-on port 53 { 127.0.0.1; 217.15.175.51; }; # ставим внешний IP интерфейса
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { any; }; # меняем, даем обращатся всем
        allow-query-cache { localhost; 10.0.0.0/24; }; # меняем, добавляем локальную сеть если она есть
        allow-recursion { localhost; 10.0.0.0/24;}; # меняем, добавляем локальную сеть если она есть
        forwarders { 217.15.178.2; 217.15.178.2; }; # добавляем, ip dns провайдера Intelsoft
        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */

        bindkeys-file "/etc/named.iscdlv.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

# Зона прямого просмотра "company.kz"
zone "company.kz" {
type master;
file "company.kz.fwd";
allow-update {none;};
allow-transfer {217.15.175.54
[size=78%]; }; //ваш вторичный DNS сервер, если он есть[/size]
};

# Наша обратная зона просмотра "company.kz"
zone "175.15.217.in-addr.arpa" {
type master;
file "company.kz.rev";
allow-update {none;};
allow-transfer {217.15.175.54
; };
};


include "/etc/named.rfc1912.zones";
# vi /var/named/company.kz.fwd
Цитировать$ORIGIN company.kz.

$TTL 3D

@       SOA                     mail.company.kz.     root.company.kz. (12 4h 1h 1w 1h)
@       IN      NS              mail.company.kz.
@       IN      MX      10    mail.company.kz.

mail.company.kz.        IN      A    217.15.175.51
www          IN      A    217.15.175.51
mail           IN      A    217.15.175.51
# vi /var/named/company.kz.rev
Цитировать$ORIGIN 175.15.217.in-addr.arpa.

$TTL 3D
@    SOA         mail.company.kz.   root.company.kz.(12 4h 1h 1w 1h)
@    IN            NS      mail.company.kz.
51     IN            PTR     mail.company.kz.
# service named start# chkconfig --level 35 named on
Проверка работы DNS:
# nslookup mail.company.kz# nslookup 217.15.175.51# nslookup -type=MX company.kz# hostname -f
Цитироватьmail.company.kz
# reboot

9. Настройка PostfixAdmin
Веб интерфейс PostfixAdmin позволит управлять вашим почтовым сервером. Добавление новых обслуживаемых доменов и почтовых ящиков производится в нем.
Настроим его загрузив веб страницу PostfixAdmin, для этого запустите браузер и введите веб адрес http://127.0.0.1/postfixadmin/setup.php
В окошке Change setup password введите свой пароль. Запомните его, он нам пригодится в дальнейшем.
Во втором окошке появится HASH нашего пароля (шифрованный пароль). Скопируйте эту "белеберду" в буфер.
После того как вы скопировали "hash" в буфер обмена, его нужно вставить в файл:
Цитировать/var/www/html/postfixadmin/config.inc.php

Откройте этот файл и найдите в нем строчку:
Цитировать$CONF['setup_password'] = 'changeme';

За место "changeme" ставим наш hash который скопировали в буфер. Получится так:
Цитировать$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';

Сохраните файл.
Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php
Создайте учетку Админа, например "administrator@company.kz", определите его пароль.
Нажмите на кнопке "Add Admin", появится надпись:
ЦитироватьAdmin has been added!
(administrator@company.kz)

Запомните адрес админа и пароль.
Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/
Вводим почтовый адрес админа и пароль.
 
Добавляем домен "comapny.kz":  Domain List - > New Domain -> company.kz
Aliases - Ставим 0
Mailboxes - Ставим 0
Add default mail aliases - Галочка
Нажимаем кнопку OK
После появится надпись:
ЦитироватьDomain has been added!
(comapny.kz)

Создадим первый почтовый ящик, например "user@company.kz".
Заходим в меню Virtual List -> Add MailBox ->
Username - user
Password - 123 (sample)
Нажимаем OK. Ящик добавлен.


Протестируем наш почтовый сервер. Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.
Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер,  у меня он имеет IP адрес почтового сервера.
Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи user@company.kz
SMTP/POP3 server:                        mail.company.kz или IP адрес
Учетная запись (Account name)user@company.kz
Пароль (password):                      123
Не забудьте настроить SMTP авторизацию - поставив галочку.
 
Отправьте себе тестовое письмо на ящик
[size=78%]user@[/size][size=78%]company.kz[/size]

10. Установка и настройка RoundCube Web Mail
На данном этапе у нас есть удобный веб интерфейс для администратора почтового сервера, но нет веб интерфейса для пользователей. Этот досадное недоразумение решается установкой RoundCube:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm# yum install php php-xml php-mcrypt php-intl php-sqlite php-pgsql# cd /var/www/html# wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail/0.9.4/roundcubemail-0.9.4.tar.gz/download# tar xvfz roundcubemail-0.9.4.tar.gz# mv roundcubemail-0.9.4 roundcube
Cоздаем файл roundcube.conf:
# vi /etc/httpd/conf.d/roundcube.conf
Вписываем следующее:
ЦитироватьAlias /webmail /var/www/html/roundcube
<Directory /var/www/html/roundcube>
AddType application/x-httpd-php .php .php3 .php4 .phtml
# forcing open_base dir do not affect anything
php_admin_value open_basedir /
# AddDefaultCharset UTF-8
AddType text/x-component .htc
<IfModule mod_php4.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M
</IfModule>
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M
</IfModule>
<FilesMatch "(\.inc|\~)$">
Order allow,deny
Deny from all
</FilesMatch>
Order deny,allow
Allow from all
</Directory>

Далее создаем базу данных и пользователя:
# mysqladmin -p create roundcubemail# mysql -p
Цитироватьmysql> GRANT ALL ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
mysql> quit
# service httpd restart# chown apache:apache -R /var/www/html/roundcube/temp# chown apache:apache -R /var/www/html/roundcube/logs
Ставим свой часовой пояс:
# vi /etc/php.ini
Цитироватьdate.timezone = Asia/Almaty

или
Цитироватьdate.timezone = Europe/Moscow

Далее  идем по адресу http://127.0.0.1/roundcube/installer/ и  устанавливаем по умолчанию, не меняя никаких настроек, кроме двух полей,  где нужно указать название базы данных и пароль. В нашем случае  название базы будет "roundcubemail", а пароль указанный ранее 'password'.
А также следует включить опцию 'htmleditor' в 'always'.
По окончании установки веб интерфейса, Вам будет предложено скачать и сохранить два конфигурационных файла:
1. db.inc.php
2. main.inc.php
Эти два файла требуется переместить в папку:
Цитировать/var/www/html/roundcube/config/

Открываем /var/www/html/roundcube/config/main.inc.php
# vi /var/www/html/roundcube/config/main.inc.php
Цитировать$rcmail_config['imap_auth_type'] = cram-md5;

Если пароль к базе Roundcube был введен с ошибкой, его можно сменить в файле
# vi /var/www/html/roundcube/config/db.inc.php
Цитировать$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcubemail';

Здесь:
     roundcube - имя пользователя базы roundcubemail
     password - пароль доступа к базе
     roundcubemail - сама база веб Интерфейса RoundCube
Если все прошло успешно, удаляем директорию установщика в целях безопасности.
# rm -R -f /var/www/html/roundcube/installer
Пытаемся зайти с Веб интерфейса, в браузере вводим адрес:
http://company.kz/webmail
или
http://[url=http://point.local/webmail]company.kz/roundcube[/url]
Будет выведено окошко, где надо указать:
- логин
- пароль
- сервер
Вводим например:
- логин: user@company.kz
- пароль: 123456
- сервер: company.kz
11. Настройка фаерволла iptables
Создаем файл с правилами фаерволла:
# vi /etc/sysconfig/firewall.sh
Цитировать
#!/bin/bash
#Очистка всех цепочек
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t mangle
#Политика по умолчанию - запретить все, что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
#Пропускать уже инициированные, а также их дочерние пакеты на вход
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
#Пропускать новые, инициированные, а также их дочерние на выход
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#Разрешаем пинги с внeшнего интерфейса
iptables -A INPUT -i eth0 -p ICMP -j ACCEPT
iptables -A OUTPUT -o eth0 -p ICMP -j ACCEPT
#Разрешаем доступ по SSH на 1234 порт сервера
iptables -A INPUT -p tcp --dport 1234 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1234 -j ACCEPT
#Разрешаем WWW на 80 порт (для Roundcube и Postfixadmin)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#Разрешаем почтовый доступ по портам 143 (IMAP), 110(POP3) и 25 (SMTP).
iptables -A INPUT -p tcp -m multiport --dports 25,110,143 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 25,110,143 -j ACCEPT
#Разрешаем ходить DNS запросам по UDP протоколу
iptables -A OUTPUT  -p udp -m udp  --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT   -p udp -m udp  --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#Разрешаем ходить DNS запросам по TCP протоколу
iptables -A OUTPUT  -p tcp -m tcp  --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT   -p tcp -m tcp  --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Лимитируем запросы по DNS порту
iptables -A INPUT -p udp --dport 53 -m hashlimit --hashlimit-name DNS --hashlimit-above 20/second \
        --hashlimit-mode srcip --hashlimit-burst 100 --hashlimit-srcmask 28 -j DROP


Даем права на запуск файла (исполняемый файл):
[/size][/font][/color]# chmod +x /etc/sysconfig/firewall.sh
Вставляем автозапуск скрипта во время загрузки ОС:
# vi /etc/rc.d/rc.local
Цитировать/etc/sysconfig/firewall.sh


Заключение
Почтовый сервер установлен и настроен, теперь за электронную переписку отвечает связка программ из мира Open Source. Решение  бесплатное, гибкое и довольно быстрое. В компании где я работаю, Postfix работает уже продолжительное время. Управлять таким почтовым сервером легко, даже Windows админ справится с такой задачей, так как мы настроили Веб интерфейс под названием PostfixAdmin. В нем можно быстро создавать почтовые домены, пользователей, настраивать пересылку и автоответчик. И это еще не все его достоинства. 
Для обычных пользователей, доступен Веб интерфейс, через который они могут проверять почту, если под рукой не оказалось почтового клиента.
В данном посте в целях более лучшего понимания и упрощения, было решено оставить только самое важное.
Это дает базовый функционал, который в принципе многих удовлетворит.
Если  у вас возникнуть вопросы, можете их задавать на специализированном форуме Postfix: www.postfix.ru

ValeryK

Эх, пару лет назад бы такой мануал.
А счас к Zimbra привыкли. Легко, доступно, бесплатно, и  еще куча полезностей.

AlfaStriker

Не говори, сейчас все автоматизировано. Ставишь Zimbra или IRedmail - и через 15 минут у тебя полноценный почтовый сервер :).
А Zimbra еще есть ломанная, так там вообще сказка.
Но у меня к сожалению сервера слабые, на старых Норзвудах, ладно проц слабый, так оперативы еще не хватает.
Как говорится прощай Zimbra, может потом увидимся когда сервак по лучше будет.

B@F

Статья понравилась, пройдет к любому дистру, если знаешь что делаешь. Вот только "минусы" сомнительные, я бы их переименовал в преимущество.  B)
Поправьте, если я ошибаюсь, буду тока рад.