Установка и настройка Postfix+Dovecot+Clamav+Spamassassin на FreeBSD 9

1.Установка и начальная настройка Postfix

cd /usr/ports/mail/postfix

make install clean

 

nano /etc/rc.conf

sendmail_enable=»NONE»

postfix_enable=»YES»

#sendmail_enable=»NO»

#sendmail_submit_enable=»NO»

#sendmail_outbound_enable=»NO»

#sendmail_msp_queue_enable=»NO»

 

nano /etc/periodic.conf

daily_clean_hoststat_enable=»NO»

daily_status_mail_rejects_enable=»NO»

daily_status_include_submit_mailq=»NO»

daily_submit_queuerun=»NO»

 

cat /etc/group  | grep mail

mail:*:6:postfix

…………………..

 

cd /usr/local/etc/postfix/

cp main.cf main.cf~

cp master.cf master.cf~

nano main.cf

nano /etc/aliases

 

newaliases

tail -f /var/log/maillog

/etc/rc.d/sendmail stop

/usr/local/etc/rc.d/postfix start

2.Добавление поддержки аутентификации SMTP

cd /usr/ports/security/cyrus-sasl2

make install clean

cd /usr/ports/security/cyrus-sasl2-saslauthd/

make install clean

cd /usr/local/lib/sasl2/

mkdir deactivated

 

mv *anonymous* deactivated/

mv *crammd5* deactivated/

mv *digestmd5* deactivated/

mv *ntlm* deactivated/

mv *sasldb* deactivated/

mv *otp* deactivated/

mv *scram* deactivated/

mv *gssa* deactivated/

mv Sendmail.conf deactivated/

 

nano /usr/local/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd

 

nano /usr/local/etc/postfix/main.cf

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain = $mydomain

broken_sasl_auth_clients = yes

 

nano /etc/rc.conf

saslauthd_enable=»YES»

saslauthd_flags=»-a getpwent»

 

 

/usr/local/etc/rc.d/saslauthd start

/usr/local/etc/rc.d/postfix restart

3.Добавление поддержки TLS-шифрования трафика

cd /usr/local/etc/postfix/

openssl req -new -nodes -x509 smtpd.pem -keyout smtpd.pem -days 3650

nano /usr/local/etc/postfix/main.cf

smtp_use_tls = yes

smtpd_use_tls = yes

smtpd_tls_auth_only = no  # чтобы можно было использовать аутентификацию SMTP не  только для #TLS-соединений, а и для обычных(нешифрованных) соединений.

 

smtp_tls_note_starttls_offer = yes

smtpd_tls_key_file = /usr/local/etc/postfix/smtpd.pem

smtpd_tls_cert_file = /usr/local/etc/postfix/smtpd.pem

smtpd_tls_CAfile = /usr/local/etc/postfix/smtpd.pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600s

tls_random_source = dev:/dev/urandom

 

nano /usr/local/etc/postfix/master.cf

smtps     inet  n       —       n       —       —       smtpd

-o smtpd_tls_wrappermode=yes

-o smtpd_sasl_auth_enable=yes

 

/usr/local/etc/rc.d/postfix/restart

 

4.Защита от вирусов и СПАМа средствами Postfix

 

nano /usr/local/etc/postfix/main.cf

mailbox_size_limit = 52428800

message_size_limit = 10485760

strict_rfc821_envelopes = yes

disable_vrfy_command = yes

 

# HELO restrictions:

smtpd_delay_reject = yes

smtpd_helo_required = yes

smtpd_helo_restrictions =

permit_mynetworks,

permit_sasl_authenticated,

reject_non_fqdn_helo_hostname,

reject_invalid_helo_hostname,

#   reject_unknown_helo_hostname

permit

 

# Sender restrictions:

smtpd_sender_restrictions =

permit_mynetworks,

permit_sasl_authenticated,

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,

reject_rbl_client zen.spamhaus.org,

reject_rbl_client bl.spamcop.net,

permit

 

smtpd_etrn_restrictions =

permit_mynetworks,

reject

 

5.Установка и настройка ClamAV

cd /usr/ports/security/clamav

make install clean

 

nano /etc/rc.conf

clamav_clamd_enable=»YES»

clamav_freshclam_enable=»YES»

 

cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf~

cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf~

 

Конфиги /usr/local/etc/clamd.conf ,/usr/local/etc/freshclam.conf

Оставил без изменений

tail -f /var/log/clamav/freshclam.log

/usr/local/etc/rc.d/clamav-freshclam start

freshclam

tail –а  /var/log/clamav/clamd.log

/usr/local/etc/rc.d/clamav-clamd start

 

6.Установка и настройка DCC

cd /usr/ports/mail/dcc-dccd/

make install clean

Работоспособность DCC можно проверить, выполнив команду cdcc 'info'

 

7.Установка и настройка Pyzor

cd /usr/ports/mail/pyzor/

make install clean

pyzor discover

less /root/.pyzor/servers

 

8.Установка и настройка Razor-Agents

cd /usr/ports/mail/razor-agents/

make install clean

razor-admin –create

razor-admin –register

ls -al /root/.razor/

 

9.Установка и настройка SpamAssassin

cd /usr/ports/mail/p5-Mail-SpamAssassin  #включить поддержку Mysql

make install clean

mysql -u root -p123456789

mysql> create database spamassassin;

mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON spamassassin.* TO spamassassin IDENTIFIED BY ‘spamassassin’;

mysql> flush privileges;

cd /usr/local/share/doc/p5-Mail-SpamAssassin/sql/

 

При импорте баз

cd /usr/local/share/doc/p5-Mail-SpamAssassin/sql

mysql -u <имя пользователя-администратора> -p spamassassin < awl_mysql.sql

mysql -u <имя пользователя-администратора> -p spamassassin < bayes_mysql.sql

mysql -u <имя пользователя-администратора> -p spamassassin < userpref_mysql.sql

была ошибка типа

'ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line…..

В связи с тем,что я импользовал уже Mysql версии 5.5

В файлах awl_mysql.sql, bayes_mysql.sql, userpref_mysql.sql

Необходимо TYPE=MyISAM заменить  на ENGINE=MyISAM

После этого импорт проходит нормально

 

mysql -u root -p123456789 spamassassin < awl_mysql.sql

mysql -u root -p123456789 spamassassin < bayes_mysql.sql

mysql -u root -p123456789 spamassassin < userpref_mysql.sql

cd /usr/local/etc/mail/spamassassin/

cp local.cf.sample local.cf

nano local.cf

sa-update

spamassassin –lint

 

10.Установка и настройка Amavisd-New

cd /usr/ports/security/amavisd-new

make install clean

nano /etc/rc.conf

amavisd_enable=»YES»

 

cd /usr/local/etc/

cp amavisd.conf amavisd.conf~

nano amavisd.conf

Для того, чтобы SpamAssassin, запускаемый Amavisd-New, мог использовать Pyzor и Razor-Agents необходимо переместить папки, содержащие их конфигурационные файлы, в домашнюю папку пользователя vscan, от имени которого работает Amavisd-New, и изменить их владельца:

cd /var/amavis/

mv ~/.pyzor/ .

mv ~/.razor/ .

chown -R vscan:vscan .pyzor .razor

Для того, чтобы демон clamd имел доступ ко временной папке Amavisd-New, необходимо добавить пользователя clamav в группу vscan:

pw groupmod vscan -M clamav

А также проверить наличие строки

# cat /usr/local/etc/clamd.conf | grep Allow

AllowSupplementaryGroups yes

 

Для того, чтобы Postfix корректно взаимодействовал с Amavisd-New, т.е. отправлял сообщения для проверки на 10024 порт локального интерфейса, который «слушает» Amavisd-New, и принимал их назад на 10025 порте локального интерфейса, необходимо добавить в файл /usr/local/etc/postfix/main.cf строки

nano /usr/local/etc/postfix/main.cf

 

content_filter=smtp-amavis:[127.0.0.1]:10024

receive_override_options = no_address_mappings

и в файл /usr/local/etc/postfix/master.cf строки:

nano /usr/local/etc/postfix/master.cf

smtp-amavis unix — — n — 4 smtp

-o smtp_data_done_timeout=1200

-o smtp_send_xforward_command=yes

-o disable_dns_lookups=yes

127.0.0.1:10025 inet n — n — — smtpd

-o content_filter=

-o local_recipient_maps=

-o relay_recipient_maps=

-o smtpd_restriction_classes=

-o smtpd_client_restrictions=

-o smtpd_helo_restrictions=

-o smtpd_sender_restrictions=

-o smtpd_recipient_restrictions=permit_mynetworks,reject

-o mynetworks=127.0.0.0/8

-o strict_rfc821_envelopes=yes

-o smtpd_error_sleep_time=0

-o smtpd_soft_error_limit=1001

-o smtpd_hard_error_limit=1000

730  22:49   /usr/local/etc/rc.d/clamav-clamd restart

/usr/local/etc/rc.d/amavisd

/usr/local/etc/rc.d/postfix restart

 

Тестовый спам для проверки работоспособности spamassassin

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

 

 

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

Я использовал Dovecot версии 2

cd /usr/ports/mail/dovecot2

make install clean

nano /etc/rc.conf

dovecot_enable=»YES»

cp /usr/local/share/doc/dovecot/example-config/dovecot.conf /usr/local/etc/dovecot/

cp -pR /usr/local/share/doc/dovecot/example-config/conf.d /usr/local/etc/dovecot/

cd /usr/local/etc/dovecot/

cp dovecot.conf dovecot.conf~

 

nano dovecot.conf

protocols = imap pop3                      # использовать протоколы imaps и pop3s включается по default

listen = *                               #прослушивать все интерфейсы

base_dir = /var/run/dovecot/

shutdown_clients = yes                     # В случае если мастер процесс завершен, до и клиентские запросы #тоже подлежат завершению

!include_try local.conf

 

cd conf.d/

nano 10-ssl.conf

ssl = no

#ssl_cert = </etc/ssl/certs/dovecot.pem

#ssl_key = </etc/ssl/private/dovecot.pem

 

nano 10-auth.conf

disable_plaintext_auth = no  #разрешить аутентификацию без SSL/TLS

 

nano 10-logging.conf

log_path = /var/log/dovecot.log

Включаем отладку на время тестирования/настройки

auth_verbose = yes

auth_debug = yes

auth_debug_passwords = yes

 

nano 10-mail.conf

mail_location = mbox:~/mail:INBOX=/var/mail/%u  #принудительно указать расположение почтовых ящиков

mail_privileged_group = mail

/usr/local/etc/rc.d/dovecot start

Логи смотрим в tail -f /var/log/dovecot.log

 

12.Прикручивание SSL к Dovecot

cp /usr/local/share/doc/dovecot/mkcert.sh /usr/local/etc/dovecot/

cp /usr/local/share/doc/dovecot/dovecot-openssl.cnf /usr/local/etc/dovecot/

cd /usr/local/etc/dovecot/

mkdir -p /usr/local/etc/dovecot/{certs,private}

 

nano mkcert.sh

SSLDIR=${SSLDIR-/usr/local/etc/dovecot}

CERTDIR=$SSLDIR/certs

KEYDIR=$SSLDIR/private

CERTFILE=$CERTDIR/dovecot.pem

KEYFILE=$KEYDIR/dovecot.pem

$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 3650 || exit 2

 

nano dovecot-openssl.cnf

[ req ]

default_bits = 1024

encrypt_key = yes

distinguished_name = req_dn

x509_extensions = cert_type

prompt = no

C=UA

ST=Kharkov

L=Kharkov

O=sda-techs

OU=IT-Department

CN=freebsd911.kama.dnsalias.com

emailAddress=postmaster@kama.dnsalalias.com

nsCertType = server

 

sh mkcert.sh

nano conf.d/10-ssl.conf

ssl = yes

ssl_cert = </usr/local/etc/dovecot/certs/dovecot.pem

ssl_key = </usr/local/etc/dovecot/private/dovecot.pem

 

nano conf.d/10-logging.conf

verbose_ssl = yes

 

Оставляем поддержку только протокола Imap

cat /usr/local/etc/dovecot/dovecot.conf | grep protocol

protocols =  imap

/usr/local/etc/rc.d/dovecot restart

 

13.Установка и настройка Squirrelmail

cd /usr/ports/mail/squirrelmail

make install clean

Проверяем/выставляем в /usr/local/etc/php.ini

file_uploads = On

short_open_tag = On

Настраиваем Apache

Добавляем в  /usr/local/etc/apache22/httpd.conf

Alias /webmail /usr/local/www/squirrelmail

<Directory «/usr/local/www/squirrelmail/»>

Options none

AllowOverride All

Order Deny,Allow

Allow from all

</Directory>

apachectl configtest

/usr/local/etc/rc.d/apache22 restart

Настраиваем Squirrelmail

cd /usr/local/www/squirrelmail && ./configure

Главное –определить Dovecot как IMAP-север

http://<sitename>/webmail/src/configtest.php — проверка конфигурации Squirrelmail

http://<sitename>/webmail/src/login.php – вход в Squirrelmail

Важно!!!

При входе используем «короткое» имя( т.е имя пользователя БЕЗ ДОМЕНА)

 

14.Тестирование Postfix,Dovecot

 

Postfix

telnet localhost 25

Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

220 freebsd911.kama.dnsalias.com ESMTP Postfix (2.10.0)

helo localhost

250 freebsd911.kama.dnsalias.com

mail from:<test@kama.dnsalias.com>

250 2.1.0 Ok

rcpt to:<bob@kama.dnsalias.com>

250 2.1.5 Ok

data

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

Hi!Do you can read it?

.

250 2.0.0 Ok: queued as 176F0126E9B

 

Postfix(SASL)

 telnet localhost 25               Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

220 freebsd911.kama.dnsalias.com ESMTP Postfix (2.10.0)

ehlo localhost

250-freebsd911.kama.dnsalias.com

250-PIPELINING

250-SIZE 10485760

250-ETRN

250-STARTTLS

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

AUTH PLAIN

334

AHRlc3QAcmp5Y25oZXJuYmQ0YnI4Mw==

235 2.7.0 Authentication successful

Это значие получаем из вывода команды

# perl -MMIME::Base64 -e  ‘print encode_base64(«\0test\0a123123»)’

AHRlc3QAcmp5Y25oZXJuYmQ0YnI4Mw==

 

Test-имя пользователя

a123123 пароль, который должен экранироваться одним нулем, если он начинается с буквы и тремя нулями, если пароль начинается с цифры

 

 

 

Dovecot

telnet localhost 110

 

Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

+OK Dovecot ready.

user test

+OK

pass a123123

+OK Logged in.

stat

+OK 0 0

quit

+OK Logging out.

Connection closed by foreign host.

 

Dovecot(SSL)

openssl s_client -connect localhost:995

CONNECTED(00000003)

depth=0 /C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

verify error:num=18:self signed certificate

verify return:1

depth=0 /C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

verify return:1

Certificate chain

0 s:/C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

i:/C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

Server certificate

——BEGIN CERTIFICATE——

MIIC+zCCAmSgAwIBAgIJAKikp+JjpjEyMA0GCSqGSIb3DQEBBQUAMIGzMQswCQYD

VQQGEwJVQTEQMA4GA1UECBMHS2hhcmtvdjEQMA4GA1UEBxMHS2hhcmtvdjESMBAG

A1UEChMJc2RhLXRlY2hzMRYwFAYDVQQLEw1JVC1EZXBhcnRtZW50MSUwIwYDVQQD

ExxmcmVlYnNkOTExLmthbWEuZG5zYWxpYXMuY29tMS0wKwYJKoZIhvcNAQkBFh5w

b3N0bWFzdGVyQGthbWEuZG5zYWxhbGlhcy5jb20wHhcNMTMwODA0MTE0ODE1WhcN

MjMwODAyMTE0ODE1WjCBszELMAkGA1UEBhMCVUExEDAOBgNVBAgTB0toYXJrb3Yx

EDAOBgNVBAcTB0toYXJrb3YxEjAQBgNVBAoTCXNkYS10ZWNoczEWMBQGA1UECxMN

SVQtRGVwYXJ0bWVudDElMCMGA1UEAxMcZnJlZWJzZDkxMS5rYW1hLmRuc2FsaWFz

LmNvbTEtMCsGCSqGSIb3DQEJARYecG9zdG1hc3RlckBrYW1hLmRuc2FsYWxpYXMu

Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynPvRf46Iu8LN2g2vgus+

6ZxcmhayYHWpBWn6ALCmbkUNhBb/5NB4IuebPWlsaHfQhCAQGcyrz9x0UqsESD+Q

e2nxYUCFEhyso1s5BGZrq3OvpU7M888e5SP+6K0rhvn2gy2MLYzpWrVuxLFxB2qJ

SjblQWYgbVyoVq6gQteBkQIDAQABoxUwEzARBglghkgBhvhCAQEEBAMCBkAwDQYJ

KoZIhvcNAQEFBQADgYEAdov1ca18RbUb6C7rcq0PvyCVtK7CiFGKhp9K7jmvhEfr

bH1SQcVH/CS40FPOEa4LPgLi1aKGoSMjeC72flxy8hRUZxa9xNgQW+wBlmn00ZyT

nfbmIgntZ1hbinUuQ8gNrq6Qz6wWnS2RVQ+domjXx4dgekgQY4Y+IUxu+XCw4M8=

——END CERTIFICATE——

subject=/C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

issuer=/C=UA/ST=Kharkov/L=Kharkov/O=sda-techs/OU=IT-Department/CN=freebsd911.kama.dnsalias.com/emailAddress=postmaster@kama.dnsalalias.com

No client certificate CA names sent

SSL handshake has read 1338 bytes and written 337 bytes

New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA

Server public key is 1024 bit

Secure Renegotiation IS supported

Compression: NONE

Expansion: NONE

SSL-Session:

Protocol  : TLSv1

Cipher    : DHE-RSA-AES256-SHA

Session-ID: F524D9D718BA8A22F3461A65C91C228B5E9B3AA14932B6FB72B4E02073986C44

Session-ID-ctx:

Master-Key: 08FF391B4F93796EC776BBF5F24D87E8CFA378739A049DAA52955CC1E8FC4DC5A22DA3FA640205066071F70C6C54BD03

Key-Arg   : None

Start Time: 1375626152

Timeout   : 300 (sec)

Verify return code: 18 (self signed certificate)

+OK Dovecot ready.

 

 

После тестирования Dovecot отключаем режим отладки и подробный вывод логов.

nano conf.d/10-logging.conf

auth_verbose = no

auth_debug = no

auth_debug_passwords = no

verbose_ssl = no

/usr/local/etc/rc.d/dovecot restart

 

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

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

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