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