Установка и настройка Postfix+Dovecot+Clamav+Spamassassin+Amavis на Centos 5

Установка и настройка Postfix+Dovecot+Clamav+Spamassassin+Amavis на Centos 5

1.Установка и настройка Postfix и Dovecot

[root@guk5 ~]# rpm -qa | grep «postfix\|dovecot»

postfix-2.3.3-6.el5

dovecot-1.0.7-7.el5_7.1

И после этого запустить этот инструмент и выбрать Postfix как MTA по умолчанию

Включение Sasl и TLS здесь описывать не буду(хотя конфиг  уже включает их поддержку)

Приводим /etc/postfix/main.cf к виду

[root@guk5 ~]# postconf -n

alias_database = hash:/etc/aliases

alias_maps = hash:/etc/aliases

broken_sasl_auth_clients = yes

command_directory = /usr/sbin

config_directory = /etc/postfix

content_filter = amavisfeed:[127.0.0.1]:10024

daemon_directory = /usr/libexec/postfix

debug_peer_level = 2

header_checks = regexp:/etc/postfix/header_checks

html_directory = no

inet_interfaces = all

mail_owner = postfix

mailq_path = /usr/bin/mailq.postfix

manpage_directory = /usr/share/man

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mydomain = kama.dnsalias.com

myhostname = guk5.kama.dnsalias.com

mynetworks = 127.0.0.0/8

myorigin = $mydomain

newaliases_path = /usr/bin/newaliases.postfix

queue_directory = /var/spool/postfix

readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES

sample_directory = /usr/share/doc/postfix-2.3.3/samples

sendmail_path = /usr/sbin/sendmail.postfix

setgid_group = postdrop

smtp_use_tls = yes

smtpd_banner = $myhostname ESMTP $mail_name

smtpd_delay_reject = yes

smtpd_helo_required = yes

smtpd_helo_restrictions = permit_mynetworks,    reject_non_fqdn_helo_hostname,    reject_invalid_helo_hostname,    permit

smtpd_recipient_restrictions = permit_mynetworks,       permit_sasl_authenticated,      reject_unauth_destination    reject_unauth_pipelining,   reject_non_fqdn_recipient,   reject_unknown_recipient_domain,   reject_rbl_client zen.spamhaus.org,   reject_rbl_client bl.spamcop.net,   permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $mydomain

smtpd_sasl_security_options = noanonymous

smtpd_sender_restrictions = permit_mynetworks,    reject_non_fqdn_sender,    reject_unknown_sender_domain,    permit

smtpd_tls_CAfile = /etc/postfix/smtpd.pem

smtpd_tls_auth_only = no

smtpd_tls_cert_file = /etc/postfix/smtpd.pem

smtpd_tls_key_file = /etc/postfix/smtpd.pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600s

smtpd_use_tls = yes

tls_random_source = dev:/dev/urandom

unknown_local_recipient_reject_code = 550

[root@guk5 ~]#

 

Включение Sasl и TLS здесь описывать не буду(хотя конфиг  уже включает их поддержку)

Файл /etc/postfix/master.cf к виду

[root@guk5 ~]# cat /etc/postfix/master.cf

smtp      inet  n       —       n       —       —       smtpd

#submission inet n       —       n       —       —       smtpd

#  -o smtpd_enforce_tls=yes

#  -o smtpd_sasl_auth_enable=yes

#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtps     inet  n       —       n       —       —       smtpd

-o smtpd_tls_wrappermode=yes

-o smtpd_sasl_auth_enable=yes

#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

#628      inet  n       —       n       —       —       qmqpd

pickup    fifo  n       —       n       60      1       pickup

cleanup   unix  n       —       n       —       0       cleanup

qmgr      fifo  n       —       n       300     1       qmgr

#qmgr     fifo  n       —       n       300     1       oqmgr

tlsmgr    unix  —       —       n       1000?   1       tlsmgr

rewrite   unix  —       —       n       —       —       trivial-rewrite

bounce    unix  —       —       n       —       0       bounce

defer     unix  —       —       n       —       0       bounce

trace     unix  —       —       n       —       0       bounce

verify    unix  —       —       n       —       1       verify

flush     unix  n       —       n       1000?   0       flush

proxymap  unix  —       —       n       —       —       proxymap

smtp      unix  —       —       n       —       —       smtp

relay     unix  —       —       n       —       —       smtp

-o fallback_relay=

#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5

showq     unix  n       —       n       —       —       showq

error     unix  —       —       n       —       —       error

discard   unix  —       —       n       —       —       discard

local     unix  —       n       n       —       —       local

virtual   unix  —       n       n       —       —       virtual

lmtp      unix  —       —       n       —       —       lmtp

anvil     unix  —       —       n       —       1       anvil

scache    unix  —       —       n       —       1       scache

maildrop  unix  —       n       n       —       —       pipe

flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}

old-cyrus unix  —       n       n       —       —       pipe

flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}

cyrus     unix  —       n       n       —       —       pipe

user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}

uucp      unix  —       n       n       —       —       pipe

flags=Fqhu user=uucp argv=uux -r -n -z -a$sender — $nexthop!rmail ($recipient)

ifmail    unix  —       n       n       —       —       pipe

flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)

bsmtp     unix  —       n       n       —       —       pipe

flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

 

Проверка синтаксиса Postfix

postfix check

Файл /etc/dovecot.conf к виду

[root@guk5 ~]# dovecot -n

# 1.0.7: /etc/dovecot.conf

base_dir: /var/run/dovecot/

protocols: pop3 pop3s imap imaps

login_dir: /var/run/dovecot//login

login_executable(default): /usr/libexec/dovecot/imap-login

login_executable(imap): /usr/libexec/dovecot/imap-login

login_executable(pop3): /usr/libexec/dovecot/pop3-login

mail_executable(default): /usr/libexec/dovecot/imap

mail_executable(imap): /usr/libexec/dovecot/imap

mail_executable(pop3): /usr/libexec/dovecot/pop3

mail_plugin_dir(default): /usr/lib/dovecot/imap

mail_plugin_dir(imap): /usr/lib/dovecot/imap

mail_plugin_dir(pop3): /usr/lib/dovecot/pop3

auth default:

passdb:

driver: pam

userdb:

driver: passwd

 

Добавляем в /etc/aliases

root: test (почта для рута будет приходить на test@<имя_домена>

newaliases

Установка в автозагрузку и старт сервисов

chkconfig —level 345 postfix on

chkconfig —level 345 dovecot on

/etc/init.d/postfix start

/etc/init.d/dovecot start

 

 

2.Фильтрация спама средствами Postfix

# HELO restrictions:

smtpd_delay_reject = yes

smtpd_helo_required = yes

smtpd_helo_restrictions =

permit_mynetworks,

reject_non_fqdn_helo_hostname,

reject_invalid_helo_hostname,

#   reject_unknown_helo_hostname

permit

 

# Sender restrictions:

smtpd_sender_restrictions =

permit_mynetworks,

reject_non_fqdn_sender,

reject_unknown_sender_domain,

permit

 

# Recipient restrictions:

smtpd_recipient_restrictions =

permit_mynetworks,

permit_sasl_authenticated,

reject_unauth_destination

reject_unauth_pipelining,

reject_non_fqdn_recipient,

reject_unknown_recipient_domain,

#   check_sender_access  hash:/etc/postfix/sender_access,

reject_rbl_client zen.spamhaus.org,

reject_rbl_client bl.spamcop.net,

#   check_policy_service unix:postgrey/socket,

permit

 

[root@guk5 ~]# postfix check

[root@guk5 ~]# postfix reload

postfix/postfix-script: refreshing the Postfix mail system

[root@guk5 ~]#

 

Для понимания, что к чему

 

[root@guk5 ~]# telnet 192.168.1.16 25

Trying 192.168.1.16…

Connected to kama.dnsalias.com (192.168.1.16).

Escape character is ‘^]’.

250 guk5.kama.dnsalias.com

250 2.1.0 Ok

250 2.1.5 Ok

354 End data with <CR><LF>.<CR><LF>

From:<test@kama.dnsalias.com>

Subject:SMTP Test

.

250 2.0.0 Ok: queued as 1D1EF5EB29

quit

221 2.0.0 Bye

Connection closed by foreign host.

 

3.Установка и настройка Clamav,Spamassassin,Amavis

yum install clamav amavisd-new spamassassin

Добавить пользователя,от которго запускает Clamd(у меня это clam в группу amavis)

gpasswd -a clam amavis

Основное внимание на такие настройки

Сlamav

/etc/clamd.conf

LogFile /var/log/clamav/clamd.log

TemporaryDirectory /var/tmp

DatabaseDirectory /var/lib/clamav

LocalSocket /var/run/clamav/clamd.sock

User clam

Spamassassin я даже не настравивал(работает из коробки,но донастроить более точно желтельно)

Amavis

/etc/amavisd/amavisd.conf

# @bypass_virus_checks_maps = (1);  # uncomment to DISABLE anti-virus code

# @bypass_spam_checks_maps  = (1);  # uncomment to DISABLE anti-spam code

Т.е по умолчанию уже включена проверка на вирусы и спам

$max_servers = 2;

$daemon_user  = ‘amavis’;

$daemon_group = ‘amavis’;

$mydomain = ‘kama.dnsalias.com’;

$MYHOME = ‘/var/spool/amavisd’;

$TEMPBASE = «$MYHOME/tmp»;

$ENV{TMPDIR} = $TEMPBASE;

$QUARANTINEDIR = undef;

# $quarantine_subdir_levels = 1;

# $daemon_chroot_dir = $MYHOME;

# $db_home   = «$MYHOME/db»;

$helpers_home = «$MYHOME/var»;  # Необходимо вручную создать папку var

$lock_file = «/var/run/amavisd/amavisd.lock»;

$pid_file  = «/var/run/amavisd/amavisd.pid»;

$inet_socket_port = 10024;

$sa_tag_level_deflt  = 2.0;

$sa_tag2_level_deflt = 6.31;

$sa_kill_level_deflt = 6.31;

$sa_dsn_cutoff_level = 10;

$mailfrom_notify_admin     = «virusalert\@$mydomain»;

$mailfrom_notify_recip     = «virusalert\@$mydomain»;

$mailfrom_notify_spamadmin = «spam.police\@$mydomain»;

$mailfrom_to_quarantine = »;

$myhostname = ‘guk5.kama.dnsalias.com’;

# $notify_method  = ‘smtp:[127.0.0.1]:10025’;

# $forward_method = ‘smtp:[127.0.0.1]:10025’;

$final_virus_destiny      = D_DISCARD; #зараженное письмо отклонять с уведомлением на #virusalert-пользователя

$final_banned_destiny     = D_BOUNCE;

#$final_spam_destiny       = D_DISCARD;

$final_spam_destiny       = D_PASS; #spam-письмо просто помечать и доставлять #получателю

$final_bad_header_destiny = D_BOUNCE;

@av_scanners = (

 

# ### http://www.clamav.net/

[‘ClamAV-clamd’,

\&ask_daemon, [«CONTSCAN {}\n», «/var/spool/amavisd/clamd.sock»],

qr/\bOK$/, qr/\bFOUND$/,

qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

);

@av_scanners_backup = (

[‘ClamAV-clamscan’, ‘clamscan’,

«—stdout —no-summary -r —tempdir=$TEMPBASE {}»,

[0], qr/:.*\sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

);

1;  # insure a defined return

 

В /etc/aliases добавляем

virusalert:     root

spam.police:    root

Перечитываем базу алиасов

newaliases

4.Привязка Amavis к Postfix

В /etc/postfix/master.cf добавляем

amavisfeed unix    —       —       n        —      2     lmtp

-o lmtp_data_done_timeout=1200

-o lmtp_send_xforward_command=yes

-o disable_dns_lookups=yes

-o max_use=20

 

127.0.0.1:10025 inet n    —       n       —       —     smtpd

-o content_filter=

-o smtpd_delay_reject=no

-o smtpd_client_restrictions=permit_mynetworks,reject

-o smtpd_helo_restrictions=

-o smtpd_sender_restrictions=

-o smtpd_recipient_restrictions=permit_mynetworks,reject

-o smtpd_data_restrictions=reject_unauth_pipelining

-o smtpd_end_of_data_restrictions=

-o smtpd_restriction_classes=

-o mynetworks=127.0.0.0/8

-o smtpd_error_sleep_time=0

-o smtpd_soft_error_limit=1001

-o smtpd_hard_error_limit=1000

-o smtpd_client_connection_count_limit=0

-o smtpd_client_connection_rate_limit=0

-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings

-o local_header_rewrite_clients=

-o smtpd_milters=

-o local_recipient_maps=

-o relay_recipient_maps=

 

[root@guk5 ~]# postfix check

[root@guk5 ~]# postfix reload

postfix/postfix-script: refreshing the Postfix mail system

 

Настройка clamd.amavis

nano /etc/sysconfig/clamd.amavisd

CLAMD_CONFIGFILE=/etc/clamd.d/amavisd.conf

CLAMD_SOCKET=/var/spool/amavisd/clamd.sock

CLAMD_OPTIONS=

nano /etc/clamd.d/amavisd.conf

LogSyslog yes

LogFacility LOG_MAIL

PidFile /var/run/amavisd/clamd.pid

FixStaleSocket yes

user (clamd must be started by root).

User amavis

LocalSocket /var/spool/amavisd/clamd.sock

 

 

Постановка в атозагрузку необходимых сервисом и и их запуск

Важно!!! Spamassassin в автозагрузку не добавляем и не запускаем его(он работает у нас не как демон,а как модуль к Amavis)

[root@guk5 ~]# chkconfig —level 345 clamd on

[root@guk5 ~]# chkconfig —level 345 amavisd on

[root@guk5 ~]# chkconfig —level 345 clamd.amavisd on

/etc/init.d/clamd start

/etc/init.d/amavisd start

/etc/init.d/clamd.amavisd start

 

5.Тестирование

cd /usr/share/doc/amavisd-new-2.4.5/

perl -pe ‘s/./chr(ord($&)^255)/sge’ <sample.tar.gz.compl | zcat | tar xvf –

 

Отправка с командной строки тестового вируса

sendmail -i bob@kama.dnsalias.com < sample-virus-simple.txt

Отправка с командной строки тестового  спама

sendmail -i bob@kama.dnsalias.com < sample-spam-GTUBE-junk.txt

Логии смотрим в /var/log/maillog

 

 

Источники:

  1. http://wiki.centos.org/HowTos/postfix
  2. http://wiki.centos.org/HowTos/postfix_restrictions
  3. http://wiki.centos.org/HowTos/Amavisd

 

Полезные ссылки:

1.http://wiki.centos.org/HowTos/postfix_sasl

http://wiki.centos.org/HowTos/postgrey

http://www.it-net.com.ua/blogs/nastrojka-sasl-i-tls-v-postfix/

 

Примечание

Т.к у меня не работала при этом авторизация с системных пользователей,то я изменил

в /etc/postfix/main.cf

#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mydestination = localhost.$mydomain, localhost

Потом создал через postfixadmin вирт домен(kama.dnsalialias.com) и пару почтовых ящиков

test@kama.dnsalias.com

bob@kama.dnsalias.com

 

Для работы с таким вирт доменом в отличии от системного,необходимо подкорректировать настройки почт.клиента(у меня Thunderbird,как для POP3/IMAP-сервера, так и для SMTP-сервера,а именно необходимо изменить имя пользователя с краткого(просто test) на полное имя_польз@имя_домена(test@kama.dnsalias.com)

 

Установка и настройка squirrelmail

yum install squirrelmail php-pear-DB

Проверяем наличие и содержимое файла

nano /etc/httpd/conf.d/squirrelmail.conf

Alias /webmail /usr/share/squirrelmail

/etc/init.d/httpd restart

Выбираем Dovecot как IMAP-сервер

/usr/share/squirrelmail/config/conf.pl

D→Dovecot→S→Q

http://192.168.1.16/webmail/src/configtest.php — проверка конфига через Web-интерфейс

Если все в порядке,тогда логинимся

http://192.168.1.16/webmail/src/login.php

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика