' Установка Postfix + Dovecot + Clamav + Roundcube на Centos 6 | Шнайдер блог

Установка Postfix + Dovecot + Clamav + Roundcube на Centos 6

В этой статье, мы разберем процесс установки почтового сервера Postfix и почтового клиента Roundcube на основе платформы CentOS 6.
В первую очередь отмечаем то, что для настройки почты нам нужны дополнительные пакеты, такие как: Dovecot, MySQL, Postgrey и другие. Для начала, нам нужно установить редактор nano:
yum install nano
И так, переходим к непосредственно к установке почтового сервера.
Первый шаг: Устанавливаем MySQL и создаем базу данных
 
yum install mysql mysql-server mysql-devel –y
После ставим службу в автозагрузку:

chkconfig mysqld on

Запускаем в работе демон MySQL:
service mysqld start
Подключаем MySQL к серверу:
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
 
Второй шаг: Установка и настройка 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
Далее, создаем собственный файл конфигурации:
nano /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 = mx.point.local 
mydomain = point.local 
myorigin = $mydomain 
mydestination = $myhostname,localhost.$myhostname,localhost 
local_recipient_maps = proxy:unix:passwd.byname $alias_maps 
unknown_local_recipient_reject_code = 550 
mynetworks = 127.0.0.0/8 
relay_domains = 
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
Весь этот перечень содержит в себе важные настройки для работы Postfix. Хотим выделить строчки: debug_peer_level и debug_peer_list: которые предназначены для логирования SMTP сессий, где debug_peer_level нужна для уровня логирования, а debug_peer_list демонстрирует с каких хостов и сетей попадают логи.
Отмечаем: что при создании файла конфигурации Postfix, важно соблюдать отступы в пробелы в некоторых местах.
После чего снова открываем главный файл конфигурации:
nano /etc/postfix/main.cf
В котором нужно добавить
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
Здесь, вам нужно добавить идентификаторы пользователя, который нужен для работы 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
Дальше, нам нужно отключить встроенную цепочку правил фаерволла (RH-Input), которая иногда может мешать нормальной работе программ.
Отключаем SELINUX:
nano /etc/selinux/config
Находим строчку:
ELINUX=enforcing
Редактируем ее следующим образом:
SELINUX=disabled
Теперь поставим запрет серверу быть открытым Релеем, для этого открываем файл:
nano /etc/postfix/main.cf
И добавляем такой блок:
smtpd_recipient_restrictions = permit_mynetworks,      
    permit_sasl_authenticated,      
    reject_unauth_destination,      
    reject_non_fqdn_recipient,      
    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
Здесь reject_unauth_destination - запрещает открытый релей через сервер. После создаем  дополнительные конфигурационные файлы в /etc/postfix/main.cf, которые  отвечают за обращение к базе данных MySQL:
mkdir /etc/postfix/sql
nano /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'
nano /etc/postfix/sql/vmailbox.cf
user = postfix  
password = password  
hosts = localhost  
dbname     = mail  
table = alias  
select_field = goto  
where_field = address  
additional_conditions = and active = '1'
 
Третий шаг: Установка и настройка Dovecot
 
yum install dovecot dovecot-mysql -y
Для того, чтобы Dovecot смог локально транспортировать  информацию, заходим в /etc/postfix/master.cf через редактор и пишем
nano /etc/postfix/master.cf
dovecot    unix    -    n    n    -    -    pipe               
             flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)
Теперь, переходим к файлу main.cf и добавляем нужные строчки:
nano /etc/postfix/main.cf
Чтобы ограничить спам, добавим такие параметры:
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 =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_authenticated_sender_login_mismatch,
    reject_unauthenticated_sender_login_mismatch,
    reject_unknown_sender_domain,
    permit_sasl_authenticated,
    reject_sender_login_mismatch
    permit
Дальше, сохраняем оригинальный файл конфигурации dovecot.conf
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
Создаем новый
nano /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.6 (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@point.local          
}
Далее, создаем файл dovecot-sql.conf
nano /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'
 
Четвертый шаг: Установка Postgrey
 
Сперва подключаем нужный репозиторий:
rpm -Uvhhttp://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
И теперь, устанавливаем сам Postgrey:
yum install postgrey -y
После установки дописываем только одну строку файл main.cf, чтобы связать postfix и спам фильтр postgrey.
Открываем файл /etc/postfix/main.cf
и вносим изменения:
smtpd_recipient_restrictions = permit_mynetworks, 
    permit_sasl_authenticated, 
    reject_unauth_destination,
 check_policy_service unix:/var/spool/postfix/postgrey/socket, 
    reject_non_fqdn_recipient, 
    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 =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_authenticated_sender_login_mismatch,
    reject_unauthenticated_sender_login_mismatch,
    reject_unknown_sender_domain,
    permit_sasl_authenticated,
    reject_sender_login_mismatch
    permit
content_filter = scan:127.0.0.1:10025 
receive_override_options = no_address_mappings
 
Пятый шаг: Установка ClamAV
 
yum remove rpmforge-release -y
rpm -Uvhhttp://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
nano /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
Открываем main.cf через редактор и добавляем строчки:
nano /etc/postfix/main.cf
и добавляем строки:
content_filter = scan:127.0.0.1:10025  
receive_override_options = no_address_mappings
Добавляем в master.cf строчки:
nano /etc/postfix/master.cf
scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes
Добавляем ниже приведенный конфиг в master.cf:
nano /etc/postfix/master.cf
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
 
Шестой шаг: Установка 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
wgethttp://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.91/postfixadmin-2.91.tar.gz/download -O postfixadmin-2.91.tar.gz
tar -xvzf postfixadmin-2.91.tar.gz
mv postfixadmin-2.91/ postfixadmin
cd postfixadmin
chown -R apache.apache /var/www/html/postfixadmin/templates_c
Дальше, открываем файл конфигурации: config.inc.php
nano  /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 mysqld on
# chkconfig dovecot on
# chkconfig postfix on
# chkconfig httpd on
# chkconfig postgrey on
# chkconfig clamd on
# chkconfig clamsmtpd on
# chkconfig saslauthd on
 
Седьмой шаг: Настройка PostfixAdmin
 
Далее, нам нужно настроить интерфейс PostfixAdmin для управления нашим почтовым сервером поскольку именно с его помощью происходит добавление новых доменов и почтовых ящиков.
Для того, чтобы его настроить загружаем веб страницу PostfixAdmin через браузер, для этого вводим адрес:
http://188.165.154.23/postfixadmin/setup.php
Чтобы создать пароль, вводим его в окне  Change setup password, сохраняем себе в заметки или запоминаем потому, что он понадобиться нам в дальнейшем.
В окне ниже отобразится ваш пароль в зашифрованном виде (hash). Копируем эту закодированную строчку и вносим в буфер обмена и вставляем его в файл.
/var/www/html/postfixadmin/config.inc.php
После открытия файла находим строку:
$CONF['setup_password'] = 'changeme';
И вместо "changeme" вставляем зашифрованную строку.
Выглядеть это будет примерно так:
$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';
Также нужно поставить YES:
$CONF['emailcheck_resolve_domain']='YES';
В конце обязательно сохраняем файл. И снова заходим на страницу
http://188.165.154.23/postfixadmin/setup.php,
где создаем учетную запись администратора, на основе домена привязанного к VPS. Например у нас это так: kate@katevps.shn-host.ru и определяем его пароль.
Нажимаем на кнопке "Add Admin", после чего появляется запись:
Admin has been added!(administrator@point.local)
Обязательно запоминаем адрес админа и пароль. И вот теперь, мы можем заходить на страничку http://188.165.154.23/postfixadmin/.
В разделе список доменов, выбираем новый домен, прописываем свой, жмем кнопку добавить.
После появится надпись:
Domain has been added! (point.local)
После создаем почтовый ящик, у нас это kate@katevps.shn-host.ru
и обязательно указываем пароль.

Восьмой шаг: Установка и настройка RoundCube Web Mail
 
Таким образом мы вышли на финишную прямую, осталось лишь создать удобный веб-интерфейс для пользователей. И в этом нам поможет установка RoundCube:
rpm -Uvhhttp://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
wgethttp://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.0.3/roundcubemail-1.0.3.tar.gz/download -O roundcubemail-1.0.3.tar.gz
tar xvfz roundcubemail-1.0.3.tar.gz
mv roundcubemail-1.0.3 roundcube
Cоздаем файл конфигурации roundcube.conf:
nano /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
Ставим свой часовой пояс:
nano /etc/php.ini
У нас, например: date.timezone = Europe/Moscow
Далее, идем по адресу http://188.165.154.23/roundcube/installer/ и устанавливаем по умолчанию, указывая имя базы данных и пароль. У нас например: имя базы "roundcubemail", а пароль 'pass123'. В процессе настройки обязательно соглашаемся на создание схемы базы Roundcube (Create Database Scheme или Initialize Database). Поскольку в случае отказа, возникнет ошибка и вы не сможете попасть на страничку RoundCube.
После установки веб интерфейса, скачиваем и сохраняем один файл конфигурации config.inc.php
перемещаем его в папку:
/var/www/html/roundcube/config/
Далее открываем файл /var/www/html/roundcube/config/defaults.inc.php меняя алгоритм по умолчанию на:
nano /var/www/html/roundcube/config/defaults.inc.php
$rcmail_config['imap_auth_type'] = cram-md5;
А также ставим IP адрес своего почтового хоста:
$rcmail_config['default_host'] = '188.165.154.23';
В RoundCube нет авто заполнения полей логин и пароль, для включения редактируем строчку:
$rcmail_config['login_autocomplete'] = 2;
Еще включаем опцию 'htmleditor' в 'always'.
$config['htmleditor'] = 0;
Если пароль к базе Roundcube был введен с ошибкой, его можно сменить в файле
nano /var/www/html/roundcube/config/db.inc.php

$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcubemail';

Здесь:
roundcube - имя пользователя базы
password - пароль доступа к базе
roundcubemail - база веб интерфейса RoundCube
После успешного завершения процесса, удаляем директорию установщика (для безопасности.)
rm -R -f /var/www/html/roundcube/installer
Для входа в веб интерфейса, вводим в браузере адрес:
http://188.165.154.23/roundcube/
В появившемся окошке указываете.
  • имя пользователя
  • и пароль
 

Категории


Хостинг сайтов

Популярное в категории