от Н. Антонов(9-09-2005)

рейтинг (12)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Тази статия е продължение на статията на Пейо Попов "Postfix с TLS поддръжка" и описва конфигурацията на новия сървър на Linux-BG.org, който много скоро ще поеме върху плещите си нашия сайт. Ако искате да разберете как е организирана цялата ни пощенска система, можете да прочетете статията "Инсталация на Postfix Admin с поддръжка на PostgreSQL".

Моля, имайте предвид, че статията е изцяло практически насочена и не претендира за теоретична изчерпателност и прецизност.

НЕОБХОДИМИТЕ ПАКЕТИ

Както вече знаете от новината за новата ни машина, използваната дистрибуция е Debian GNU/Linux 3.1. Добавянето на антивирусна проверка в пощенския сървър Postfix започва с инсталирането на необходимите пакети. Тъй като се придържаме към изискването да ползваме изцяло свободен софтуер, се спряхме на изключително надеждната антивирусна система ClamAV.

Възползвайки се от усъвършенстваната система за проверка на зависимости в Debian, достатъчно е само да изпълним командата:

Инсталиране на пакета clamsmtp
apt-get install clamsmtp

С тази команда пакетният мениджър apt ще инсталира и останалите пакети, които са необходими за нашата цел.

НАСТРОЙКА НА POSTFIX

За да "научите" Postfix как да третира писмата, които пристигат и се изпращат чрез него, така че да минават и на "преглед" за вируси, трябва да редактирате двата основни файла на сървъра, като добавите следните директиви и опции:

/etc/postfix/master.cf
# AV scan filter (used by content_filter)
 scan      unix  -       -       n       -       16      smtp
 -o smtp_send_xforward_command=yes
 # For injecting mail back into postfix from the filter
 127.0.0.1:10026 inet  n -       n       -       16      smtpd
 -o content_filter=
 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 -o smtpd_helo_restrictions=
 -o smtpd_client_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks_style=host
 -o smtpd_authorized_xforward_hosts=127.0.0.0/8
/etc/postfix/main.cf
content_filter = scan:127.0.0.1:10025
 receive_override_options = no_address_mappings
Рестартиране на Postfix
/etc/init.d/postfix restart

НАСТРОЙКА НА CLAMSMTP

Пакетът clamsmtp осигурява интерфейса между пощенския сървър и самия антивирусен скенер, т.е. изпълнява работата на специализиран прокси сървър. Конфигурационният файл, от който се управлява, е /etc/clamsmtpd.conf. В него редактираме само два реда така, че да са съобразени с настройките, които вече сме задали в Postfix.

/etc/clamsmtpd.conf
OutAddress: 10026
 Listen: 127.0.0.1:10025
Рестартиране на clamsmtp
/etc/init.d/clamsmtp restart

Какво се случва на практика? Когато Postfix получи писмо, търси на зададения в main.cf файл адрес 127.0.0.1 и порт 10025 филтър за проверка на съобщенията, където приветливо го посреща clamsmtp. След като писмото бъде прегледано, се връща обратно и clamsmtp го "засилва" към порт 10026, където отново трябва да го посрещне Postfix (посред настройките в master.cf), за да продължи пътя си нататък.

SENDER POLICY FRAMEWORK (SPF)

В епохата на спама е добре да се използват всички възможни средства за защита от всевъзможни злоупотреби. Често пъти получаваме оплаквания, а и самите ние сме жертви на това, че хората получават спам от името на домейна linux-bg.org, от които по всичко личи, че не са изпратени от нас. Самите ние постоянно получаваме писма от самите себе си, като една голяма част от пощенския боклук, на който ставаме потърпевши, се оказва изпратен именно чрез злоупотреба с чужди домейни.

Ето защо решихме да включим SPF запис в домейна linux-bg.org, след като го пренесем на новия ни сървър. Това обаче е само едната страна на медала. Другата предполага да включим в нашия пощенски сървър проверка съгласно SPF.

Концепцията е следната. Когато сървърът ни получи писмо от домейна domain.com, проверява дали този домейн има SPF запис в зоната си, който е от типа TXT и изглежда примерно така:

SPF запис за домейна mail.bg
mail.bg descriptive text "v=spf1 ip4:193.201.172.0/24 ~all"

Горният запис се отнася до домейна mail.bg и се вижда чрез командата:

Търсене на SPF запис за домейна mail.bg
host -t txt mail.bg

В този запис се намират указания (най-често списък с IP-та), от които пощенският ни сървър разбира кои хостове имат право да изпращат писма от името на този домейн. Ако хостът, от който пристига текущото писмо не попада в този списък, писмото се отхвърля.

Как решаваме практически нещата? Преди всичко трябва да инсталираме пакета libmail-spf-query-perl. Още преди време включих този тип проверка в настоящия пощенски сървър на linux-bg.org с помощта на указания от сайта http://spf.pobox.com (може би един от най-полезните източници на информация за SPF). От въпросния сайт се сдобих със скрипта smtpd-policy.pl, който трябва да се "вгради" в конфигурацията на Postfix. "Вграждането" става с добавянето на следната информация във файла master.cf:

/etc/postfix/master.cf
policy  unix  -       n       n       -       -       spawn
 user=nobody argv=/usr/bin/perl /usr/lib/postfix/smtpd-policy.pl

За да включим самата проверка, трябва да отворим файла main.cf и да добавим в smtpd_recipient_restrictions допълнението check_policy_service unix:private/policy. Ето как изглежда в момента настройката на този параметър в нашия Postfix:

smtpd_recipient_restrictions
smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 permit_tls_clientcerts,
 reject_non_fqdn_recipient,
 reject_unauth_destination,
 reject_invalid_hostname,
 reject_unauth_pipelining,
 reject_non_fqdn_sender,
 reject_unknown_sender_domain,
 reject_non_fqdn_recipient,
 reject_unknown_hostname,
 check_policy_service unix:private/policy,
 reject_unknown_recipient_domain,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client relays.ordb.org,
 reject_rbl_client sbl-xbl.spamhaus.org,
 permit

Ако искаме да се уверим, че нещата работят, можем да следим какво се случва във файла /var/log/mail.log. Ето как протича цялата проверка.

Postfix получава писмо от името на домейна access-one.com. Този домейн има SPF запис, който гласи:

Търсене на SPF запис за домейна access-one.com
host -t txt access-one.com
 access-one.com descriptive text "v=spf1 ptr ip4:198.247.160.16 -all"

Хостът обаче, от който пристига писмото, е с IP 65.31.120.31 и не попада в разрешените съгласно SPF записа хостове. В резултат - писмото е отхвърлено с любезно съобщение от нашия филтър:

Съобщение за отхвърляне
domain of 308lalit@access-one.com does not designate 65.31.120.31 as permitted sender


<< Инсталиране и конфигуриране на VPN сървър и клиент | Как да форматираме Windows дялове >>