Почтовый сервер на базе Exim - это хорошее решение для малых и средних компаний которые хотят иметь свою надежную и стабильную почтовую службу для приема и отправки электронной почтовой переписки. В этой короткой записке будет описан процесс установки почтового сервера на базе MTA Exim 4.80 с MDA Dovecot v2, MySQL, Clamav и Postfixadmin.
Операционная система: | 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
Приступим
Замечу, что я установил 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/passworddomainlist 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_dataav_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 = 0ssender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hostsignore_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 = truelog_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_runsyslog_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_domainsdeny 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_m0accept domains = +local_domains
endpass
message = "No such user"
verify = recipientaccept 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.bizaccept 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
acceptbegin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_moresystem_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_deliverybegin 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 cleardovecot_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 = eximaddress_pipe:
driver = pipe
return_outputaddress_reply:
driver = autoreplybegin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticatorsauth_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 = $1auth_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 = $2auth_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
Server: 192.168.1.2Address: 192.168.1.2#53point.local mail exchanger = 10 mx.point.local.
# reboot
Теперь зайдите в PostfixAdmin, для этого запустите браузер и введите веб адресhttp://127.0.0.1/postfixadmin/setup.php
В окошке Change setup password введите свой пароль два раза и нажмите на серую кнопку Generate password hash. Запомните его, он нам пригодится в дальнейшем.
Во втором окошке появится "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
Создайте учетную запись администратора, например "administrator@point.local", определите его пароль.
По ней мы будем входить в веб интерфейс администратора.
Нажмите на кнопке "Add Admin", появится надпись:
Admin has been added!
(administrator@point.local)
Запомните адрес админа и пароль.
Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/
Вводим почтовый адрес админа и пароль. Нажимаем кнопку Login.
Добавляем домен "point.local": Заходим в главное меню Domain List - > New Domain -> point.local
Aliases - Ставим 0
Mailboxes - Ставим 0
Add default mail aliases - Галочка
Add Domain - Нажать кнопку
После появится надпись:
Domain has been added!
(point.local)
Создадим первый почтовый ящик, я создал "linux@point.local" как на картинке внизу.
Заходим в главное меню -> Virtual List -> Add MailBox ->
Вводим:
Username - linux
Password - 123456 (sample)
Name - Linux Way User
Add Mailbox - Нажать на кнопку
После создания учетной записи появится надпись вроде этой:
Поздравляю, вы создали первую пользовательскую учетную запись!
Теперь пришло время тестировать наш почтовый сервер.
Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.
Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер, у меня он имеет 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, что с английского переводится как НЕ УСТАНОВЛЕН.
Нажмите кнопку "NEXT"
Доступ к базе данных MySQL, вводим свой пароль, у меня он для примера "password".
Удобно иметь расширенный редактор, включаем для этого настройку htmleditor = allways, это опция включить HTML формат писем с расширенными функциями редактирования текста. В наше время мало кто отправляет письма обычным текстом без форматирования.
По окончанию ввода нажимаем кнопку CREATE CONFIG
После нажатия кнопки создадутся два конфиг файла, их надо скачать и положить в директорию RoundCube:
/var/www/html/roundcube/config
Копируем следующие файлы: main.inc.php и db.inc.php в /var/www/html/roundcube/config/
Файлы положены?
Продолжаем дальше....
В этом же окне меняем надпись Product_name
И нажимаем кнопку CONTINUE
У нас создана база roundcubemail, но не созданы таблицы в ней. Для создания таблиц, нажмите на кнопке Initialize Database.
Как на картинке внизу:
Поздравляю, вы только что установили и настроили веб интерфейс 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
Окно авторизации пользователя, здесь надо вписать:
- Логин - он же электронный почтовый адрес
- Пароль - который администратор установил пользователю
- Сервер - адрес сервера, можно ввести 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';
------------------------
Установка и настройка завершена.
-------------------------
Заключение
Мы установили почтовый сервер на 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 authenticatorsauth_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 = $auth2auth_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 = $auth1auth_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