Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
02:58, 05 января 2014

Установка Exim 4.80 на CentOS 6.4 x32

Blog post image

Почтовый сервер на базе Exim - это хорошее решение для малых и средних компаний которые хотят иметь свою надежную и стабильную почтовую службу для приема и отправки электронной почтовой переписки. В этой короткой записке будет описан процесс установки почтового сервера на базе MTA Exim 4.80 с MDA Dovecot v2, MySQL, Clamav и Postfixadmin.

Blog post image
Операционная система:CentOS 6.4 x32
MTA:Exim 4.80
IMAP/POP3 server:Dovecot v2.09
Антивирус:Clamav
Домен:point.local
Имя хоста почтового сервера:mx.point.local
IP адрес почтового сервера:192.168.1.2

Краткое содержание записки:

1. Подключение необходимых репозитариев
2. Установка СУБД MySQL, создание базы данных VEXIM
3. Установка Postfixadmin
4. Установка ClamAV
5. Установка Dovecot
6. Установка Exim
7. Настройка Exim
8. Настройка Dovecot
9. Отключаем Postfix
10. Добавление сервисов в автозагрузку
11. Для тех кто хочет протестировать почтовый сервер Exim в локальной сети
12. Установка и настройка RoundCube Web Mail

Приступим Blog post image

Замечу, что я установил CentOS с графической оболочкой

1. Подключим необходимый репозиторий:

# rpm -Uvh http://dl.atrpms.net/el6-i386/atrpms/stable/atrpms-repo-6-6.el6.i686.rpm

2. Установка СУБД MySQL, создание базы данных VEXIM

Установим СУБД MySQL:

# yum -y install mysql-server mysql

# service mysqld start

Создадим базу данных Vexim:

# mysql -p

mysql> CREATE DATABASE vexim;

mysql> GRANT ALL ON vexim.* to vexim@localhost identified by 'password';

mysql> exit

3. Установка Postfixadmin

Установим зависимости для Postfixadmin:

# yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli gedit mc

Скачаем 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

# gedit config.inc.php

$CONF['configured'] = true;

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'vexim';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'vexim';
$CONF['database_prefix'] = '';

$CONF['emailcheck_resolve_domain']='NO';

4. Установка ClamAV

Установим Clamav:

# yum -y install clamav

5. Установка Dovecot

Установим Dovecot:

# yum install dovecot dovecot-mysql -y

6. Установка Exim

Установим сам Exim:

# yum install exim exim-mysql -y

# mv /etc/exim/exim.conf /etc/exim/exim.conf-orig
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-orig

7. Настройка Exim

Создадим файл /etc/exim/exim.conf

# gedit /etc/exim/exim.conf

В открывшемся окне вставим следующий текст:

primary_hostname = mx.point.local
hide mysql_servers = localhost/vexim/vexim/password

domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}

domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}

hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.50.0/24#add the hosts from which you allow relaying here

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

av_scanner = clamd:/var/run/clamav/clamd.socket

# spamd_address = 127.0.0.1 783

qualify_domain = point.local
qualify_recipient = point.local
allow_domain_literals = false
exim_user = exim
exim_group = exim
never_users = root
rfc1413_query_timeout = 0s

sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts

ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts = 192.168.50.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = true

log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run

syslog_timestamp = no

begin acl

acl_check_rcpt:
accept  hosts = :
deny    message       = "incorrect symbol in address"
domains       = +local_domains
local_parts   = ^[.] : ^.*[@%!/|]

deny    message       = "incorrect symbol in address"
domains       = !+local_domains
local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

accept  local_parts   = postmaster
domains       = +local_domains

deny    message       = "HELO/EHLO required by SMTP RFC"
condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

accept  authenticated = *

deny    message       = "Your IP in HELO - access denied!"
hosts         =  * : !+relay_from_hosts : !81-196.point.local
condition     = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}

deny    condition     = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts         = !127.0.0.1 : !localhost : *
message       = "My IP in your HELO! Access denied!"

deny    condition     = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts         = !127.0.0.1 : !localhost : *
message       = "Incorrect HELO string"

# filter spammers from dynamic ips
deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
condition     = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}

warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts:4.3.2.1/32:192.168.50.0/24 #disable waits for 'friendly' hosts
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0

accept  domains       = +local_domains
endpass
message       = "No such user"
verify        = recipient

accept  domains       = +relay_to_domains
endpass
message       = "i don't know how to relay to this address"
verify        = recipient

#  deny    message       = "you in blacklist - $dnslist_domain \n $dnslist_text"
#          dnslists      = opm.blitzed.org : \
#                          cbl.abuseat.org : \
#                          bl.csma.biz

accept  hosts         = +relay_from_hosts

deny    message       = "Homo hominus lupus est"

acl_check_data:

# check for viruses
deny malware = *
message = "Your message contains viruses: $malware_name"

# if needed - add spam filtering here

# permit everything else
accept

begin routers

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

system_aliases:
driver      = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}

dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery

begin transports

remote_smtp:
driver = smtp
interface = 4.3.2.1 #your public ip address, if it's the main server ip - you could skip this parameter. if it's an alias- it must be specified in clear

dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = exim

address_pipe:
driver = pipe
return_output

address_reply:
driver = autoreply

begin retry

*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h

begin rewrite

begin authenticators

auth_plain:

driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = "${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}"
server_set_id = $1

auth_login:

driver = plaintext
public_name = PLAIN
server_condition = "${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}"
server_prompts = :
server_set_id = $2

auth_cram_md5:

driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

8. Настройка Dovecot

Настроим Dovecot, создайте файл /etc/dovecot/dovecot.conf:

# gedit /etc/dovecot/dovecot.conf

В данный файл вставьте текст:

# 2.0.14: dovecot.conf
# OS: Linux 2.6.32-71.29.1.el6.i686 i686 CentOS Linux release 6.0 (Final)
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
first_valid_uid = 93
listen = *
login_greeting = Dovecot ready man.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
mail_location = maildir:/var/vmail/%d/%u
passdb {
driver = pam
}
passdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener auth-master {
group = exim
mode = 0660
user = exim
}
user = root
}
service imap-login {
chroot =
client_limit = 256
process_limit = 128
process_min_avail = 3
service_count = 1
vsz_limit = 64 M
}
service pop3-login {
chroot =
client_limit = 256
process_limit = 128
process_min_avail = 3
service_count = 1
vsz_limit = 64 M
}
ssl = no
userdb {
driver = passwd
}
userdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocol imap {
imap_client_workarounds = tb-extra-mailbox-sep
mail_plugins = quota imap_quota
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = admin@point.local
}

Также требуется отредактировать файл /etc/dovecot/dovecot-mysql.conf:

# gedit /etc/dovecot/dovecot-mysql.conf

Его содержимое должно быть таким:

#File: /etc/dovecot/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=vexim user=vexim password=password
default_pass_scheme = MD5-CRYPT
password_query = SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

9. Отключаем Postfix

Отключим и удалим Postfix, который по умолчанию уже инсталирован в системе CentOS 6. Это надо сделать чтобы избежать конфликтов между двумя почтовыми системами.

# alternatives --config mta

Selection    Command
-----------------------------------------------
*  1           /usr/sbin/sendmail.postfix
+ 2           /usr/sbin/sendmail.exim

Жмем 2 и нажимаем Enter.

# chkconfig --level 123456 postfix off

# service postfix stop

# yum remove postfix -y

Также отключим цепочку RH-Input:

# setup

Firewall Configuration -> Firewall Enabled -> Убираем галочку

Отключаем SELINUX:

# gedit /etc/selinux/config   -> SELNIUX=disabled

10. Добавление сервисов в автозагрузку

# chkconfig --level 35 clamav on

# chkconfig --level 35 mysqld on

# chkconfig --level 35 httpd on

# chkconfig --level 35 exim on

# chkconfig --level 35 dovecot on

Выставляем права:

# usermod -a -G exim clamav

# chmod -Rf g+w /var/spool/exim
# chmod -Rf g+s /var/spool/exim

# mkdir /var/vmail

# chown exim:exim -R /var/vmail

# chown exim:exim -R /var/spool/exim

Для тех кто хочет протестировать Exim в локальной сети.

Если вы уже имеете DNS сервера в которые можно поместить запись MX и A,  данный пункт можно пропустить. Так как третий DNS сервер будет лишним.

Но если у вас нет DNS сервера, проделайте все что внизу написано. Мы устанавливаем DNS сервер чтобы проверить работоспособность почтового сервера.

За DNS функцию в Linux в большинстве случаев отвечает пакет Bind, после установки этого пакета вас станет доступен демон Named. Демон Named позволить настроить DNS сервер. В пашем случае DNS сервер будет мастером. В принципе этого хватает.

Напомню, что наш почтовый сервер имеет следующий IP адрес 192.168.1.2.

При этом еще имеется локальная сеть с адресом 192.168.1.0

Перед настройкой DNS сервера, полезно выключить службу NetworkManager:

# service NetworkManager stop

# chkconfig NetworkManager off

# service network restart

Установка пакета Bind:

# yum install bind bind-utils -y

# gedit /etc/sysconfig/network

Меняем значение на:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mx.point.local

# gedit /etc/hosts

Добавляем в конец файл строчку:

192.168.1.2 mx.point.local mx

# gedit /etc/named.conf

Здесь меняем и добавляем только строчки выделенные жирным шрифтом. Остальное не трогайте.

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) 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; 10.168.50.2; 192.168.1.2;}; //Перечисляем IP адреса наших сетевых карт 10.168.50.2 - внутренний IP, 192.168.1.2 - внешний IP

listen-on-v6 port 53 { ::1; };

listen-on-v6 port 53 { none; };

forwarders {217.15.88.2; 217.15.88.4;};

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;}; // разрешаем всем доступ к DNS

allow-query-cache { 127.0.0.1; 10.168.50.0/24;}; // Локальная сеть 10.168.50.0/24

allow-recursion   { 127.0.0.1; 10.168.50.0/24;};

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto;

/* Path to ISC DLV key */

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

managed-keys-directory "/var/named/dynamic";

};

logging {

category lame-servers {null;};

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

zone "." IN {

type hint;

file "named.ca";

};

# Наша прямая зона просмотра "point.local"

zone "point.local" {

type master;

file "point.local.fwd";

allow-update {none;};

#allow-transfer {217.15.54.51; }; //slave DNS server

};

# Наша обратная зона просмотра "point.local"

zone "1.168.192.in-addr.arpa" {

type master;

file "point.local.rev";

allow-update {none;};

#allow-transfer {217.15.54.51; }; //slave DNS server

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

include "/etc/rndc.key";

# vi /var/named/point.local.fwd

Создаем файл прямого просмотра зоны:

$ORIGIN point.local.

$TTL 3D

@       SOA     ns1.point.local.     admin.point.local. (13 4h 1h 1w 1h)

@           IN           NS                         ns1.point.local.

@           IN           MX         10          mx.point.local.

point.local.                      IN           A            192.168.1.2

ns1.point.local.                   IN           A            192.168.1.2

mx.point.local.                    IN           A            192.168.1.2

mail.point.local.                   IN           A            192.168.1.2

www                    IN      A       192.168.1.2

mail                   IN      A       192.168.1.2

# vi /var/named/point.local.rev

Создаем файл обратного просмотра зоны:

$ORIGIN 1.168.192.in-addr.arpa.

$TTL 3D

@       SOA     ns1.point.local.     admin.point.local. (13 4h 1h 1w 1h)

@       IN      NS      ns1.point.local.

2 IN      PTR     ns1.point.local.

2 IN PTR mx.point.local.

2 IN PTR mail.point.local.

# gedit /etc/sysconfig/network-scripts/ifcfg-eth0  -> DNS1=127.0.0.1

# service named start

# service network restart

# chkconfig --level 35 named on

Проверка записей DNS:

# dig axfr point.local

[root@mx ~]# dig axfr point.local

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> axfr point.local

;; global options: +cmd

point.local. 259200 IN SOA ns1.point.local. admin.point.local. 13 14400 3600 604800 3600

point.local. 259200 IN NS ns1.point.local.

point.local. 259200 IN MX 10 mx.point.local.

point.local. 259200 IN A 192.168.1.2

mail.point.local. 259200 IN A 192.168.1.2

mx.point.local. 259200 IN A 192.168.1.2

ns1.point.local. 259200 IN A 192.168.1.2

www.point.local. 259200 IN A 192.168.1.2

point.local. 259200 IN SOA ns1.point.local. admin.point.local. 13 14400 3600 604800 3600

;; Query time: 1 msec

;; SERVER: 192.168.1.2#53(192.168.1.2)

;; WHEN: Fri Sep 13 12:02:21 2013

;; XFR size: 9 records (messages 1, bytes 233)

# nslookup -type=any point.local

[root@mx ~]# nslookup -type=any

> point.local

Server: 192.168.1.2

Address: 192.168.1.2#53

point.local

origin = ns1.point.local

mail addr = admin.point.local

serial = 13

refresh = 14400

retry = 3600

expire = 604800

minimum = 3600

point.local nameserver = ns1.point.local.

point.local mail exchanger = 10 mx.point.local.

Name: point.local

Address: 192.168.1.2

# nslookup -type=mx point.local
Server: 192.168.1.2
Address: 192.168.1.2#53
point.local mail exchanger = 10 mx.point.local.

# reboot

Теперь зайдите в PostfixAdmin, для этого запустите браузер и введите веб адресhttp://127.0.0.1/postfixadmin/setup.php

Blog post image

В окошке Change setup password введите свой пароль два раза и нажмите на серую кнопку Generate password hash. Запомните его, он нам пригодится в дальнейшем.

Blog post image

Во втором окошке появится "hash" нашего пароля (шифрованный пароль). Скопируйте эту "белеберду" в буфер.

После того как вы скопировали "hash" в буфер обмена, его нужно вставить в файл/var/www/html/postfixadmin/config.inc.php

Откройте этот файл и найдите в нем строчку:

$CONF['setup_password'] = 'changeme';

За место "changeme" ставим наш hash который скопировали в буфер. Получится так:

$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';

И еще поставьте NO здесь:

$CONF['emailcheck_resolve_domain']='NO';

$CONF['encrypt']='md5crypt';

Сохраните файл.

Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php

Blog post image

Создайте учетную запись администратора, например "administrator@point.local", определите его пароль.

По ней мы будем входить в веб интерфейс администратора.

Blog post image

Нажмите на кнопке "Add Admin", появится надпись:

Admin has been added!
(administrator@point.local)

Запомните адрес админа и пароль.

Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/

Blog post image

Вводим почтовый адрес админа и пароль. Нажимаем кнопку Login.

Blog post image

Добавляем домен "point.local": Заходим в главное меню Domain List - > New Domain -> point.local

Aliases - Ставим 0

Mailboxes - Ставим 0

Add default mail aliases - Галочка

Add Domain - Нажать кнопку

Blog post image

После появится надпись:

Blog post image

Domain has been added!
(point.local)

Создадим первый почтовый ящик, я создал "linux@point.local" как на картинке внизу.

Заходим в главное меню  -> Virtual List -> Add MailBox ->

Blog post image

Вводим:

Username - linux

Password - 123456 (sample)

Name - Linux Way User

Add Mailbox - Нажать на кнопку

Blog post image

После создания учетной записи появится надпись вроде этой:

Blog post image

Поздравляю, вы создали первую пользовательскую учетную запись!

Теперь пришло время тестировать наш почтовый сервер.

Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.

Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер,  у меня он имеет IP адрес почтового сервера.

Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи linux@point.local

SMTP/POP3 server:                        point.local

Учетная запись (Account name):   linux@point.local

Пароль (password):                      123456

Отправьте себе тестовое письмо!

12. Установка и настройка RoundCube Web Mail

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

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

# yum install php-xml php-mcrypt php-intl php-sqlite php-pgsql

# cd /var/www/html

# wget http://nchc.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.9.4/roundcubemail-0.9.4.tar.gz

# 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> exit

# chown apache:apache -R /var/www/html/roundcube/temp

# chown apache:apache -R /var/www/html/roundcube/logs

Настройка часового пояса в php.ini:

# vi /etc/php.ini

date.timezone = Asia/Almaty

# service httpd restart

Для настройки RoundCube заходим на страницу по адресуhttp://127.0.0.1/roundcube/installer/ и  устанавливаем по умолчанию все настройки кроме обязательных. В нашем случае обязательными являются настройки доступа к базе данных MySQL которую мы создали ранее. Нам потребуется заполнить два поля  где нужно указать название базы данных и пароль. В нашем случае  название базы будет "roundcubemail", а пароль, указанный ранее "password". Внизу все это показано на картинках, не обращайте внимание на надписи NOT AVAILABLE, так как мы используем MySQL, пакеты от SQLite и SQL Server нам не нужны, об этом и сигнализирует предупреждение NOT AVAILBALE, что с  английского переводится как НЕ УСТАНОВЛЕН.

Blog post image

Нажмите кнопку "NEXT"

Blog post image

Доступ к базе данных MySQL, вводим свой пароль, у меня он для примера "password".

Blog post image

Удобно иметь расширенный редактор, включаем для этого настройку htmleditor = allways, это опция включить HTML формат писем с расширенными функциями редактирования текста. В наше время мало кто отправляет письма обычным текстом без форматирования.

По окончанию ввода нажимаем кнопку CREATE CONFIG

Blog post image

После нажатия кнопки создадутся два конфиг файла, их надо скачать и положить в директорию RoundCube:

/var/www/html/roundcube/config

Копируем следующие файлы: main.inc.php и db.inc.php в /var/www/html/roundcube/config/

Файлы положены?

Продолжаем дальше....

Blog post image

В этом же окне меняем надпись Product_name

И нажимаем кнопку CONTINUE

Blog post image


У нас создана база roundcubemail, но не созданы таблицы в ней. Для создания таблиц, нажмите на кнопке Initialize Database.

Как на картинке внизу:

Blog post image

Поздравляю, вы только что установили и настроили веб интерфейс RoundCube.

Если все прошло успешно, удаляем директорию установщика в целях безопасности.

# rm -R -f /var/www/html/roundcube/installer

Доступ к веб интерфейсу Roundcube осуществляется путем ввода в браузере адреса:

http://point.local/webmail

или

http://point.local/roundcube

Хотя можно ввести ip адрес сервера:

http://192.168.1.2/webmail

Blog post image

Окно авторизации пользователя, здесь надо вписать:

  • Логин - он же электронный почтовый адрес
  • Пароль - который администратор установил пользователю
  • Сервер - адрес сервера, можно ввести 127.0.0.1 или point.local или 192.168.1.2

Если у вас всего один домен, тогда желательно убрать поле Server, для этого откроем файл /var/www/html/roundcube/config/main.inc.php:

Строчка 78:Вписать свой почтовый сервер

$rcmail_config['default_host'] = 'mail.point.local';

Blog post image

Blog post image

 

------------------------

Установка и настройка завершена.

-------------------------

Заключение

Мы установили почтовый сервер на Linux систему, путь был долгим и кропотливым, но согласитесь, все таки у этого решения есть преимущества. Почтовый агент Exim, имеет хорошую документацию на русском языке, его конфигурационный файл более понятен. И самое главное, в этом MTA (Mail Transfer Agent) можно составлять разные правила которые могут отрабатывать в зависимости от разных условий.  Хотите резать спам по определенному условию или Вы хотите чтобы письмо обрабатывалось со сложной логикой, пожалуйста делайте! Этой фишкой пользуются многие Linux админы, поэтому их уже сложно пересадить на другие MTA, вроде Postfix.

Данное решение открытое, поэтому его можно бесплатно использовать в компании. Это завлекает, особенно сейчас когда идут повальные проверки компании на легальность софта.

Многие Windows админы наверно скажут, что эта же сложная система, и если возникнет проблема ее будет тяжело решить. Скажу честно, как бывший Windows админ почтового сервера на Mdaemon - ничего сложного тут нет, особенно если использовать базовый конфигурационный файл, который предоставляет самые востребованные функции почтового сервера. Что в принципе и нужно большинству компаний. Эта система работает как "ТАНК", главное чтобы исправно работало железо и разделы вашего жесткого диска всегда содержали достаточное место под письма и логи. И все таки, если у вас возникнуть проблемы, вы легко сможете найти причину заглянув в логи, которые прольют свет на детали ошибки. А дальше, как обычно - всемогущий "ГУГЛ" в руки...

 

mini FAQ:

1. Как можно настроить PLAIN авторизацию:

Если вы хотите чтобы у вас пароли хранились открытым текстом в базе:

Откройте файл /var/www/html/postfixadmin/config.inc.php

Найдите и приведите строчку к виду:

$CONF['encrypt'] = 'cleartext';

Откройте файл /etc/dovecot/dovecot-mysql.conf

Найдите и приведите строчку к виду:

default_pass_scheme = PLAIN

Откройте файл /etc/exim/exim.conf

Найдите  в конце файла  начало секции begin authenticators

Удалить старые строчки аутентификации и вставьте эти:

begin authenticators

auth_plain:

driver = plaintext
public_name = PLAIN
server_condition = ${lookup mysql{SELECT `username` FROM \
`mailbox` WHERE `username` = \
'${quote_mysql:$auth2}' AND `password` = \
'${quote_mysql:$auth3}'}{yes}{no}}
server_prompts = :
server_set_id = $auth2

auth_login:

driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{SELECT `username` FROM \
`mailbox` WHERE `username` = \
'${quote_mysql:$auth1}' AND `password` = \
'${quote_mysql:$auth2}'}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1

auth_cram_md5:

driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT `password` FROM \
`mailbox` WHERE `username` \
= '${quote_mysql:$auth1}'}{$value}fail}
server_set_id = $auth2
 

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

# service exim restart

# service dovecot restart

После этих изменений надо будет заново пересоздать учетные записи.

2. Как можно настроить Dovecot SASL и CRAM-MD5

Включаем авторизацию через SASL Dovecot (CRAM-MD5) в Exim

В /etc/exim/exim.conf меняем секцию авторизации чтобы задействовать Dovecot SASL + CRAM-MD5:

begin authenticators

auth_plain:

driver = dovecot

public_name = PLAIN

server_socket = /var/run/dovecot/auth-client

server_set_id = $auth1

auth_login:

driver = dovecot

public_name = LOGIN

server_socket = /var/run/dovecot/auth-client

server_set_id = $auth1

auth_cram_md5:

driver = dovecot

public_name = CRAM-MD5

server_socket = /var/run/dovecot/auth-client

server_set_id = $auth1

В /var/www/html/postfixadmin/config.inc.php находим строчки и меняем их значения на:

$CONF['encrypt'] = 'dovecot:CRAM-MD5';

$CONF['dovecotpw'] = "/usr/bin/doveadm pw";

В /var/www/html/roundcube/config/main.inc.php находим строчку и меняем ее значение на:

$rcmail_config['imap_auth_type'] = cram-md5;

В /etc/dovecot/dovecot.conf находим строчку и меняем ее значение на:

auth_mechanisms = plain login cram-md5

Вот полный текст этого конфиг файла:

# 2.0.9: /etc/dovecot/dovecot.conf

# OS: Linux 2.6.32-358.6.2.el6.i686 i686 CentOS release 6.4 (Final)

auth_default_realm = point.local

auth_mechanisms = plain login cram-md5

base_dir = /var/run/dovecot/

disable_plaintext_auth = no

dotlock_use_excl = yes

first_valid_gid = 6

first_valid_uid = 26

listen = *

mail_location = maildir:/var/vmail/%d/%u

mail_privileged_group = mail

passdb {

args = /etc/dovecot/dovecot-mysql.conf

driver = sql

}

protocols = imap pop3

service auth {

unix_listener auth-client {

group = exim

mode = 0660

user = exim

}

unix_listener auth-master {

group = exim

mode = 0600

user = exim

}

user = root

}

ssl = no

userdb {

args = blocking=yes

driver = passwd

}

userdb {

args = /etc/dovecot/dovecot-mysql.conf

driver = sql

}

verbose_proctitle = yes

protocol imap {

imap_client_workarounds = delay-newmail   tb-extra-mailbox-sep

}

protocol pop3 {

pop3_client_workarounds = outlook-no-nuls oe-ns-eoh

pop3_uidl_format = %08Xu%08Xv

}

protocol lda {

auth_socket_path = /var/run/dovecot/auth-master

postmaster_address = admin@point.local

}

В /etc/dovecot/dovecot-mysql.conf находим строчку и меняем ее значение на:

default_pass_scheme = CRAM-MD5

 

----------------------------------------------------

Документация на русском:

http://www.lissyara.su/doc/exim/4.70/

Конфигурационные  файлы системы тут:

http://download.files.namba.kz/files/3287044

Установка Postfix на CentOS 6 x32:

http://akehayc.yvi.kz/post/251584

Источник:

http://blog.eulinux.org/2009/09/exim-dovecot-clamav-postfixadmin.html

 
0