ustanavlivaem_svjazku_exim_dovecot_na_centos_6
Устанавливаем связку Exim + Dovecot на CentOS 6
1) Установим exim как SMTP сервер и dovecot для сбора почты через POP3.
yum install exim dovecot -y
2) Запишем начальную конфигурацию для exim в файл /etc/exim/exim.conf (не забываем поправить в нем primary_hostname):
Пример начальной конфигурации
Пример начальной конфигурации
primary_hostname = domain
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+tls_cipher +tls_peerdn \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error
domainlist local_domains = lsearch;/etc/exim/domains
hostlist relay_from_hosts = 127.0.0.1
domainlist relay_to_domains = lsearch;/etc/exim/domains
exim_user = exim
exim_group = exim
trusted_users = apache
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 1d
timeout_frozen_after = 1d
smtp_accept_max = 500
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mail = acl_check_sender
begin acl
acl_check_rcpt:
accept hosts = :
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
verify = recipient
domains = +local_domains
require verify = sender
accept hosts = +relay_from_hosts
control = submission
accept authenticated = *
condition = ${if eq{${extract{5}{:}{${lookup{$authenticated_id}lsearch{/etc/exim/passwd}}}}}{no} {yes}{no}}
condition = ${if eq{${extract{3}{:}{${lookup{${domain:$authenticated_id}}lsearch{/etc/exim/domains}}}}}{no} {yes}{no}}
control = submission/domain=
deny message = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
dnslists = ${readfile {/etc/exim/dnsblists}{:}}
require message = relay not permitted
domains = +local_domains : +relay_to_domains
require verify = recipient
accept
acl_check_data:
accept
acl_check_sender:
accept
begin routers
dnslookup:
driver = dnslookup
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
cannot_route_message = Unknown user
no_more
group_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/aliases}}}}
condition = ${if and{\
{exists{/etc/exim4/aliases}}\
{eq {${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/aliases}}}}} {group} }\
} {yes} {no} }
redirect_router = a_dnslookup
aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/aliases}}}}
condition = ${if exists{/etc/exim/aliases} {yes} {no} }
aliases_pipe:
driver = accept
transport = aliases_pipe
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim/pipe-aliases} {yes} {no} }
local_users:
driver = redirect
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim/passwd} {yes} {no} }
data = $local_part@$domain
redirect_router = autoreplay
catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
file_transport = local_delivery
unknown_users:
driver = redirect
allow_fail = yes
data = :fail: Unknown user
no_more
autoreplay:
driver = accept
condition = ${if exists{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}/message.txt} {yes} {no}}
retry_use_local_part
transport = address_reply
unseen
localuser:
driver = accept
transport = local_delivery
# Same routers without autoreplay
a_dnslookup:
driver = dnslookup
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
a_disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
a_disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
a_local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
cannot_route_message = Unknown user
redirect_router = a_dnslookup
no_more
a_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/aliases}}}}
condition = ${if exists{/etc/exim/aliases} {yes} {no} }
redirect_router = a_dnslookup
a_aliases_pipe:
driver = accept
transport = aliases_pipe
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim/pipe-aliases} {yes} {no} }
a_local_users:
driver = accept
transport = local_delivery
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim/passwd} {yes} {no} }
a_catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/etc/exim/domains}}}}
file_transport = local_delivery
redirect_router = a_dnslookup
begin transports
remote_smtp:
driver = smtp
local_delivery:
driver = appendfile
file = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}/inbox
delivery_date_add
envelope_to_add
return_path_add
mode = 0660
quota = ${extract{3}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}M
quota_warn_threshold = 75%
use_lockfile = no
no_mode_fail_narrower
user = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}
group = ${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}
address_pipe:
driver = pipe
return_output
aliases_pipe:
driver = pipe
command = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/pipe-aliases}}}}
use_shell
address_reply:
driver = autoreply
headers = ${readfile{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/passwd}}}}/message.txt}}
to = $sender_address
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $1
plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $1
3) Создадим остальные конфигурационные файлы:
touch /etc/exim/aliases /etc/exim/blacklist /etc/exim/dnsblists /etc/exim/domains /etc/exim/pipe-aliases
4) Запишем конфигурацию для dovecot в файл /etc/dovecot/dovecot.conf :
Конфигурация для Dovecot
Конфигурация для Dovecot
log_path = /var/log/dovecot.log
login_greeting = pop3/imap service.
protocols = imap pop3
auth_mechanisms = plain login cram-md5 digest-md5
service auth {
unix_listener auth-client {
mode = 0660
user = exim
group = exim
}
user = root
}
passdb passwd-file {
args = /etc/dovecot/passwd
driver = passwd-file
}
userdb {
args = /etc/dovecot/passwd
driver = passwd-file
}
disable_plaintext_auth = no
mail_privileged_group = mail
first_valid_uid = 93
ssl = no
mail_location = mbox:/var/mail/%d/%n
5) Запишем скрипт для создания юзеров, например в /root/addmail.sh :
Скрипт для создания пользователей (ящиков)
Скрипт для создания пользователей (ящиков)
#!/bin/sh
mailuser=$1
pass=$2
hash=`doveadm pw -s MD5 -p $pass`
user=`echo $mailuser |cut -d'@' -f1`
domain=`echo $mailuser |cut -d'@' -f2`
mkdir -p /var/mail/$domain/$user
touch /var/mail/$domain/$user/inbox
chown -R exim:exim /var/mail/$domain
if ! grep $domain /etc/exim/domains >/dev/null
then
echo "$domain:$domain::no" >>/etc/exim/domains
fi
echo "$mailuser:93:93:0:/var/mail/$domain/$user:no:" >>/etc/exim/passwd
echo "$mailuser:$hash:93:93::/var/mail/$domain/$user:::" >>/etc/dovecot/passwd
Не забываем сделать chmod для него:
chmod +x /root/addmail.sh
Создание нового ящика будет делаться так:
/root/addmail.sh mailbox@domain.com password
6) Стартуем exim и dovecot, а также включаем их в автозагрузку:
chkconfig dovecot on chkconfig exim on service dovecot start service exim start
Источник:
ustanavlivaem_svjazku_exim_dovecot_na_centos_6.txt · Последнее изменение: 2016/04/15 00:00 (внешнее изменение)
