====== Устанавливаем связку 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** : 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 ---- ====== Источник: ====== * [[http://www.note4us.com/2012/04/centos-exim-dovecot-clamav-spamassasin/|note4us.com]]