Communigate Pro
CommuniGate Pro — серверная платформа для организации электронной почты, передачи голосовых данных посредством технологии VoIP, мгновенного обмена сообщениями и автоматизации совместной работы. Программное обеспечение CommuniGate Pro поддерживает различные операционные системы и работает как в сетях IPv4, так и IPv6.
ЗАДАЧА
Создать полнофункциональную почтовую систему на 1000-1500 человек с защитой от вирусов, спама и нежелательного контента, с возможностью обучения фильтра пользователями.
Описываемая система работает на базе операционной системы SLES10 SP2 (ppc64) [1] в логическом разделе LPAR [2] на сервере IBM pSeries [3]. Используется 32х-битная ppc-сборка CommuniGate Pro 5.3 [4].
ЛИЦЕНЗИРОВАНИЕ
Описание политики лицензирования CommuniGate Pro и сопутствующего ПО
УСТАНОВКА
Для начала следует удалить текущий почтовый пакет из системы. В SuSE Linux это делается через YaST, удаляемый пакет: postfix
Communigate Pro
Следует помнить, что диск восстановления SUSE без вопросов меняет коммунигейтовский внутренний sendmail, после чего перестают уходить во внешний мир письма из локальной очереди.
Последнюю версию communigate под различные аппаратные платформы можно взять на сайте производителя по адресу: ftp://ftp.stalker.com/pub/CommuniGatePro/
Установка из rpm-пакета:
cd /usr/local/src wget ftp://ftp.stalker.com/Pub/CommuniGatePro/CGatePro-Linux.ppc.rpm rpm -Uvh CGatePro-Linux.ppc.rpm
StartUp-скрипт
Startup скрипт Communigate Pro при установке в SUSE с VLAN's требует некоторой доработки. Открываем /etc/init.d/CommuniGate и находим строчку:
Required-Start:
Меняем ее на:
Required-Start: network $named
Выполняем в консоли:
insserv -r CommuniGate
insserv CommuniGateВсе! Теперь при перезагрузках системы Communigate будет подхватывать ip-адреса VLAN's
Добавление suse-like стиля rc к стартовому скрипту comunigate
ln -s /etc/init.d/CommuniGate /usr/sbin/rcCommuniGate
CLI.pm
Скачиваем perl-библиотеку CLI.pm [5] с сайта http://www.stalker.com/CGPerl/CLI.pm в директорию /usr/local/lib и делаем символическую ссылку в /usr/lib/perl5/{version}
Следует помнить, что при обновлении communigate следует вручную скачать новую версию библиотеки!
ClamAV
К сожалению (или счастью) авторам неизвестны коммерческие антивирусы, работающие на платформе POWER5 (ppc64)
RPM-пакет для SUSE можно взять по адресу: http://download.opensuse.org/repositories/security/ (Бинарный пакет для архитектуры PPC в репозитории отсутствует, зато .src.rpm прекрасно компилируется):
rm /usr/src/packages/RPMS/ppc/clamav* cd /usr/local/src wget "http://download.opensuse.org/repositories/security/SLE_10/src/clamav-0.96.1-28.1.src.rpm" rpmbuild --nodeps --rebuild --target=ppc clamav-0.96.1-28.1.src.rpm rpm -Uvh /usr/src/packages/RPMS/ppc64/clamav*
Запуск демона при старте системы:
cd /etc/init.d insserv clamd
Установка ежечасных автоматических обновлений вирусных баз:
cd /etc/cron.hourly ln -s `which freshclam` clamav-update
SpamAssassin
Установка через CPAN:
perl -MCPAN -e shell install Mail::SpamAssassin
Дополнительно мы установили следующие модули:
HTML::Parser Mail::SPF IP::Country Net::Ident IO::Socket::INET6 IO::Socket::SSL Mail::DKIM LWP::UserAgent HTTP::Date IO::Zlib Encode::Detect
Запуск демона при старте системы:
cd /etc/init.d insserv spamd
Настройка автообновлений правил идентификации спама из репозитория spamassassin:
/etc/cron.hourly/sa-update
sa-update && rcspamd restartФильтр для совместной работы cgp+clamav+spamassasin
Внешний фильтр cgpav для Communigate: http://program.farit.ru/doc/cgpav-rus.html
Бесплатный Clamav, Kaspersky Anti-Virus (AVP), Sophos Anti-Virus, Trend Micro, Dr.Web и SpamAssassin внешний фильтр (плагин) для почтового сервера CommuniGate Pro. Используется для сканирования всех сообщений, которые проходят через почтовый сервер CommuniGate Pro www.stalker.com
tar xvfz cgpavXXX.tar.gz cd cgpavXXX ./configure --with-antivirus=clamav --with-spamassassin=yes --with-cgpro_dir=/var/CommuniGate make && make install
По-умолчанию программа установится в каталог /var/Communigate; конфигурационный файл - /var/Communigate/Settings/cgpav.conf
Тестовый (лабораторный) вирус eicar
Описание находится по адресу: http://www.eicar.org/anti_virus_test_file.htm
Нам для работы необходим файл http://www.eicar.org/download/eicar.com Именно с его помощью мы в дальнейшем будем тестировать нашу почтовую систему.
НАСТРОЙКА
Модификация конфигурационных файлов
/etc/clamd.conf
PidFile /var/lib/clamav/clamd.pid # Локальный сокет необходим для работы с cgpav LocalSocket /var/lib/clamav/clamd-socket # Пользователь, от которого работает демон User vscan # Так же необходимо разрешить использование дополнительных # групп для того, чтобы демон имел необходимые права # доступа к сообщениям в спулере communigate AllowSupplementaryGroups yes
/etc/group
mail:x:12:vscan
Добавляет пользователя vscan дополнительно в группу mail, чтобы демон имел возможность работы с каталогами /var/Communigate
/var/CommuniGate/Settings/cgpav.conf
# Не уведомляем отправителя о вирусе sender_notification = false # ...а получателя уведомляем... recipients_notification = true # ... и администратора тоже postmaster_notification = true # оригинальные заголовки письма помогают выяснить # от кого на самом деле пришел вирус original_message_headers = true clamd_socket = /var/lib/clamav/clamd-socket enable_spamassassin = true spam_scan_local = false spam_action = addheaderall spam_header = X-Spam-Flag: Yes spam_level_header = true extra_spam_action = none spamassassin_socket_type = unix spamassassin_socket = /var/run/spam
/etc/sysconfig/spamd
SPAMD_ARGS="-d -c -a -L --socketpath=/var/run/spam
CommuniGate
Все глобальные настройки осуществляются в административном веб-интерфейсе системы (http-порт 8010 или https-порт 9010 на почтовом сервере). Используется "экспертный" режим.
Настройки конкретных доменов, заведение и удаление пользователей производятся доменными администраторами из интерфейса управления домена: http://mail.example.com:8010/DomainAdmin/domain.name/
Изменение портов пользовательского web-интерфейса
По-умолчанию communigate предоставляет доступ к web-интерфейсу пользователя на портах 8100 и 9100. Изменим их на стандартные 80 и 443:
Установки -> Услуги -> HTTPU -> Приемник
Меняем 8100 на 80 и 9100 на 443
robots.txt / favicon.ico
Чтобы поисковые роботы не индексировали почтовую службу, создаем на локальной машине файл robots.txt [1] следущего содержания:
User-Agent: * Disallow: /
Помещаем его в CommuniGate:
Пользователи -> Интерфейсы -> Загрузить файл
Теперь на запросы поисковых роботов cgp будет отдавать /robots.txt во всех доменах.
favicon.ico можно при желании загрузить таким же образом.
Подключение фильтра cgpav
Установки -> Общее -> Помощники
В разделе Фильтрация Данных добавляем правило с именем cgpav и пишем в Путь к Программе: cgpav
Теперь необходимо перейти в раздел: Установки -> Почта -> Правила
Добавляем правило с приоритетом 4, называем его virus_scan и нажимаем Изменить. Собираем правило:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 1024
- Действие - Внешний фильтр
- Параметр - cgpav
Нажимаем Модифицировать
При желании можно исключить из проверки письма, приходящие из доверенных источников, к примеру с рабочих ПК предприятия, защищенных корпоративным антивирусом. В таком случае правило для подключения cgpav будет выглядеть следующим образом:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 1024
- Данные - Источник
- Операция - Не среди
- Параметр - trusted,authenticated
- Действие - Внешний фильтр
- Параметр - cgpav
Запрещение использования определенных типов файлов
Всвязи с трудоемкостью ручного добавления большого количества однотипных фильтров, была использована следующая схема: фильтры были сгенерированы sh-скриптом по шаблону, а получившийся результат вставлен в конфигурационный файл /var/CommuniGate/Settings/Rules.settings
Правило использует заголовки письма, вставляемые дополнительным скриптом find-attachments.pl
Скрипт ~/bin/generate.sh для генерации правил:
#!/bin/bash for i in ade adp bas cpl crt hlp inf ins isp lnk mdb mde msc msi msp mst pcd reg sct shs url\ vb wsc bat chm cmd com exe hta jse pif scr shb vbe vbs vbx wsf wsh asd dllocx vxd 386 asp\ asx bin cab cgi cil cpe cvp eml ex_ inp jar keyreg mda mdw mp3 nte nws pl pm pot pps slb\ swf swt sys vir vmx wms wmz xlw xms htr app csh fxp ksh mdt ops prg sh dot adt btm cbt cla\ clas class csc css drv email fon ini lib mht mhtm mhtml mso obj ov pgm smm xlw xl cbl do echo " (" echo " 5," echo " kill_attachment_$i," echo " ((\"Header Field\", in, \"X-AttachExt: $i\"))," echo " (" echo " (" echo " \"Reject with\"," echo " \"Error: \\\".$i\\\" file attachment types not allowed\e\e\"" echo " )" echo " )" echo " )," done
Создание сертификатов для защищенного ssl-соединения
По умолчанию Communigate использует тестовый метод ssl-авторизации. Для обеспечения нормальной работы ssl необходимо внести следующие правки: В административном интерфейсе Communigate выбираем следующую вкладку:
Пользователи -> Домены -> Домен -> Безопасность -> SSL/TLS
И в окне "Услуги PKI криптографии" меняем значение на "включено". Далее необходимо сгенерировать самоподписанный сертификат во внутреннем генераторе сертификатов.
Следует помнить, что имя-идентификатор сертификата должен соответствовать точному dns-имени сервера, на который заходят пользователи вашего домена.
Защита от DoS атак
Чтобы предотвратить появление ситуации типа "отказ в обслуживании", вызваные черезмерным количеством одновременно открытых tcp-сессий используются следующие параметры:
"Установки" -> "Почта" -> "SMTP" -> "Прием"
Устанавливаем параметр "Каналы" на значение 1000. Переходим по ссылке "Приемник" и устанавливаем параметры:
- Ограничение на соединения с одного Адреса -> 100
- Резерв соединений для Клиентов -> 300
Порт Submission (587)
Для клиентов, находящихся вне локальной сети предприятия, следуя RFC 2476 рекомендуется открыть порт 587 (Submission) [6] [7] на сервере и настроить почтовые клиенты на работу с SMTP с этим портом, вместо 25го, который все больше и больше провайдеров закрывают в своих сетях для борьбы со СПАМом.
Установки -> Почта -> SMTP -> Прием -> Приемник
- Добавляем порт 587
- Начальный SSL/TLS вкл.
Порт POP-SSL (995)
Для клиентов которые очень хотят работать по pop3
Установки -> Доступ -> POP -> Приемник
- Добавляем порт 995
- Начальный SSL/TLS вкл.
Pronto!
В версии 5.3 в интерфейсе Pronto! появилась очень удобная кнопочка "Обратная связь", открывающая новое письмо с адресом получателя pronto-feedback@communigate.com. Логично заменить его на e-mail адрес своей техподдержки. Заходим в каталог /opt/CommuniGate/WebSkins/Pronto- (обратите внимание на "-" на конце) и выполняем следующую команду:
find ./ -type f -name "*.data"| xargs perl -pi -w -e 's/pronto-feedback\@communigate.com/support\@example.com/g;'
Локальные вспомогательные скрипты
Данные скрипты установлены в директории /usr/local/cgpro-scripts и имеют сиволические ссылки в /usr/local/bin Они помогут автоматизировать множество операций с почтовой системой.
- spamassasin_spam_learner
Скрипт для автоматического обучения байесовского фильтра spamassassin со специальных аккаунтов learn-spam и learn-ham. Скрипт имеет символическую ссылку в /etc/cron.daily
#!/bin/bash # Learn SPAM: /usr/bin/sa-learn --showdots --mbox --spam /var/CommuniGate/Accounts/learn-spam.macnt/INBOX.mbox /usr/bin/sa-learn --showdots --mbox --spam /var/CommuniGate/Accounts/learn-spam.macnt/SPAM.mbox # Learn HAM: /usr/bin/sa-learn --showdots --mbox --ham /var/CommuniGate/Accounts/learn-ham.macnt/INBOX.mbox /usr/bin/sa-learn --showdots --mbox --ham /var/CommuniGate/Accounts/learn-ham.macnt/SPAM.mbox # Rebuild bayes DB sa-learn --sync --force-expire # Kill all letters older than 1 day: /usr/local/bin/oldmail_del.pl
- oldmail_del.pl
Скрипт, используемый в связке с spamassasin_spam_learner, удаляет письма старше одного дня.
- findattach-cgp
Усовершенствованная версия программы для поиска приложений в письмах, написанная на языке C
Исходник забираем со следующего сайта: http://kocmuk.ru/2010/06/08/find-attachments-cgp/ Для работы приложения необходимы библиотеки GNU Mailutils версии не ниже 2.2, берем с официального сайта: http://www.gnu.org/software/mailutils/
После сборки и установки Mailutils компилируем статически findattach-cgp.с:
gcc -Wall -I /%path-to-mailutils-distrib%/include/ -pthread -lcrypt findattach-cgp.c /%path-to-mailutils-distrib%/mailbox/.libs/libmailutils.a -o findattach-cgp
и кладем получившийся бинарник в /usr/local/bin.
Подключение фильтра происходит следующим образом:
Установки -> Общее -> Помощники
В разделе Фильтрация Данных добавляем правило с именем Find_Attachments и пишем в Путь к Программе в нашем случае:
/usr/local/bin/findattach-cgp -f
Ключ "-f" включает режим т.н. fuzzy-logic, определяющий тип вложения, если то не содержит расширения.
Теперь необходимо перейти в раздел: Установки -> Почта -> Правила
Добавляем правило с приоритетом 6, называем его Find_Attachments и нажимаем Изменить. Собираем правило:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 2048
- Действие - Внешний фильтр
- Параметр - Find_Attachments
Нажимаем Модифицировать
- find-attachments.pl
Скрипт для поиска вложений в письмах и добавления специального заголовка, используется соввместно с фильтрами communigate
Подключение фильтра происходит следующим образом:
Установки -> Общее -> Помощники
В разделе Фильтрация Данных добавляем правило с именем Find_Attachments и пишем в Путь к Программе:"путь к инрерптитатору perl + путь к скрипту" (в нашем случае: /usr/bin/perl /usr/local/bin/find-attachments.pl)
Теперь необходимо перейти в раздел: Установки -> Почта -> Правила
Добавляем правило с приоритетом 6, называем его Find_Attachments и нажимаем Изменить. Собираем правило:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 2048
- Действие - Внешний фильтр
- Параметр - Find_Attachments
Нажимаем Модифицировать
- auto-delite-junk.pl
Скрипт для автоматического удаления писем из папки SPAM старше 14 дней
- AddFilter.pl
Скрипт для автоматической настройки аккаунтов пользователей, добавляет каждому папку SPAM и правило, складывающее туда письма, помеченные spamassassin флагом X-Spam-Flag: Yes
Антиспамерские меры
CommuniGate
Задержка ответа сервера
Установки -> Почта -> SMTP -> Прием
В разделе ограничения: отложить ответ сервера на 7 сек.
Время задержки можно варьировать, однако мы не рекомендуем устанавливать задержку более, чем на 30 сек. несмотря на то, что по требованиям RFC задержка может составлять до 5 минут.
SPF проверка [8]
Установки -> Почта -> SMTP -> Прием
Проверять SPF-записи: Включено
Ограничения
Установки -> Почта -> SMTP -> Прием
Отсоединить после: 15 ошибок и Заблокировать Доступ на: 60 мин.
Встречное соединение
Установки -> Почта -> SMTP -> Прием
Соединяться навстречу: Всегда
Так же возможно использования режима:
Соединяться навстречу: Добавлять поле
Режим "всегда" может привести к некорректной работе с серверами, использующими серые списки (greylisting) или внешние релеи для отправки почты. Добавляемые поля можно использовать при обработке spamassassin. Однако же при регулярном контроле лог-файлов режим "всегда" может быть использован, поскольку резко сокращает поток нежелательной корреспонденции.
Неиспользуемые (в настоящее время) значения полей:
X-Reverse-Check: Bad SMTP prompt at the host
Используемые значения полей:
X-Reverse-Check: address rejected with reverse-check X-Reverse-Check: connection closed by peer X-Reverse-Check: connection refused X-Reverse-Check: no relay available X-Reverse-Check: no response X-Reverse-Check: read time-out X-Reverse-Check: reverse check protocol error
Блокировки RFC Reader
Идем: Установки -> Почта -> RFCReader
Ставим правила, отклоняющие письма с pipe:
From: *<*|*@*> From: *|* Return-Path: *<|*@*> Return-Path: *|*
Блокированные Сетевые Адреса
Установки -> Сеть -> Блокировки
; непонятный sip-спаммер 92.243.14.140 ; descr: OJSC Uralsvyazinform, Khanty-Mansiysk department ; descr: For ADSL users ; country: RU 90.150.32.0-90.150.47.255 ; netname: IS-Stafraen-Dreifing ; descr: BTnet xDSL (via Netheimur/XNet) ; country: IS 81.15.51.0-81.15.51.255 ; Hijacked IP space for spammers, see google or slashdot 134.17.0.0-134.17.255.255 ; netname: KYBERNA-NET ; descr: Dialin connector ip SDSL customers 88.82.103.0-88.82.103.255 ; ADSL-CONNECTION-FIXIP ; remarks: please send ABUSE complains to abuse@bezeqint.net 62.219.224.0-62.219.239.255 ; netname: SURTECH-PH ; country: PH ; descr: Surtech Philippines Inc 203.131.110.168-203.131.110.175 ; netname: B-ONE-NET ; descr: One.com A/S 195.47.247.0-195.47.247.255 200.223.236.0-200.223.236.31 ; generic ip's 58.140.121.239 212.150.181.58 211.226.197.165 220.225.224.4 89.239.140.54 84.22.142.140 217.145.194.104 69.10.44.198 68.16.247.24 89.189.128.245 82.179.222.9 77.223.95.84 209.62.55.82 74.55.237.114 67.43.10.51 62.42.230.12 80.243.7.117 86.55.81.251 201.41.156.6 193.222.191.154 122.217.190.101 82.114.103.10 190.40.16.227 195.239.212.46 189.74.80.220 190.67.249.69 85.105.133.115 58.8.170.242 92.244.41.105 208.36.224.25
Использование блокировок по DNS-именам
В административном интерфейсе Communigate открываем следующую вкладку:
Установки -> Сеть -> Блокировки
Включаем "Вычислять Блокированные по DNS-именам". Мы используем следующие поля общего вида:
*.adsl.* *.dsl.* *.xdsl.* *.pool.* *.cable.* *.dial.* *.dip.* *.adsl-dhcp.* *.dynamic.* *.pppoe.* *.cable-modem.* *.dsl-nat.* *.broadband*.* *.adsl-access.* *.*.*.*.*.* *-*-*-*.*.* host-*.*.* *.unused-addr.* *.pppool.* ppp-*.*.* *gprs.*.* *.dhcp.* *.ppp.* pppoe-* adsl-* dsl-* *-homeuser-*.*.* dynamic-*.*.* bredband.*.*.* broad.*.*.* catv.*.*.* cdma*.*.* client.*.*.* dlup.*.*.* dslam.* dyndsl.* modem.* *.ftth.* *.ddns.* *.in-addr.*.* *-xdsl-dynamic.* pptp.* *.dsl-dynamic.* *.xdsl-line.* unnasigned-reverse-* sdn.*.*.* wdsl.* wifi.*.*.* wlan.*.*.*
Поля по конкретным операторам:
*.dyn.optonline.net *.setardsl.aw *.dsl-verizon.net *.rima-tde.net user.*.satfilm.net.pl *.inturbo.lt *.fios.verizon.net pool-*.verizon.net adsl*.etb.net.co *.rdsnet.ro adsl*.simnet.is real-*.kvidex.ru *.business.telecomitalia.it cust-*.ontelecoms.gr *.web2k.net *.adslplus.ch *.cl.metrocom.ru *.Home-Lan.fastnet.lv *.ttnet.net.tr *.access.telenet.be *.rr.com *.users.intility.com *.cableonda.net *.netspace.net.au *.cablesurf.de *.customer-*.uninet-ide.com.mx *.tukw.qwest.net host*.gudzonserver.com *.v.shared.ru *.interlain.lv *.cbcast.com *.b-one.net *.websiteactive.com clt-*.vdnet.lt *.giga-dns.com *.netverk.com.ar *.telecom.net.ar *.btc-net.bg *.net.upc.cz *.client*.youtele.com dyn*.pacific.net.sg host*.butovo.com homeuser*.perm.ru *.isp.belgacom.be *.cpe.netcabo.pt *.ewe-ip-backbone.de *.dyn.centurytel.net *-*.*.cn.ru *-*.wispnet.net *.onocable.ono.com *.cablep.bezeqint.net *.cgocable.net *.fibertel.com.ar *.internetdsl.tpnet.pl *.shawcable.net *.asm.bellsouth.net *.abo.wanadoo.fr *.charter.com *.*.fairgamemail.us *.*.virtua.com.br *.ad.jp *.asianet.co.th *.customer.alfanett.no *.maxonline.com.sg *.telpol.net.pl *.user.veloxzone.com.br *dynip.superkabel.de *homenet.master.ru *yahoobb.*.bbtec.net *.bb.sky.com *.bdsl.sk *.bsb.vectranet.pl *.claranet.co.uk *.elb.vectranet.pl *.customers.tvtnet.ch *.sbcis.sbc.com *.turktelekom.com.tr *.uninet.lv *.versanet.de *.wanadoo.co.uk a.*.sub.*.net.*.udm.net b-internet.*.snt.ru *.cust.bluewin.ch *.lan.sify.net *.is.co.za client-*.*.satelnet.ro *.fbx.proxad.net duser-*-*.popnet.sk dxb-*.alshamil.net.ae host.*.rusmedia.ru kabelnet-*-*.juropnet.hu leased-line-*.telecom.by *.comcast.net nat-altair.*.netbynet.ru nn.*.excitenetwork.com p*-*.cust.nbox.cz p*.mp*.aaanet.ru p-.*.powernet.bg public-gprs*.centertel.pl customer-*.millicom.com *.hkcable.com.hk net*.omskdom.ru *.live.blueyonder.co.uk *.dsl-w.verizon.net kns-*.kansstel.ru *.pools.arcor-ip.net *.uio.satnet.net net*.e-kirov.ru CLIENT-*.dialog.net.pl *.fastportnet.cz customers-*.dnet.dp.ua free-*.net1.bg segment-*.sify.net *.sovintel.spb.ru *.redes.acens.net pc-*.vtr.net *.dyn.*.awesomenet.net *.optusnet.com.au *.tlt.ru cust-*.tsnet.ru *-dsl.qfast.net *.speedy.telkom.net.id station*.unionjv.ru koel-*-*.koelnet.com bd*.virtua.com.br node*-*.network.is.nl *.comcastbusiness.net *.wlan.rz.tu-bs.de ppp*-*.global-ts.ru cblmdm*.buckeyecom.net *.hsi.kabelbw.de *-dynamic.*.telecomitalia.it *.ll.kw.ua public*.cdma.* user-*.msk.pl *.codetel.net.do dsl*.ttnet.net.tr cable-*.blue-cable.de *-*.rev.gaoland.net cliente-*.iberbanda.es *.onlinehome-server.com *.retail.ttk.ru vh*.hoster.by host*.*.prov.ru host*.tijo.3s.pl *.ketnet.cz *.digiweb.com.br ns*.ovh.net rps*.ovh.net *.bereopelos.ru ks*.kimsufi.com *.cvdnet.pl
Так же при желании можно добавить строку вида
- (host name is unknown)
для того, что бы заблокировать все сетевые адреса которые не имеют обратных (PTR) записей в DNS [9] (отсутствие PTR является нарушением Секции 2.1 RFC 1912 и Секции 3.6 RFC 2821)
Использование блокирующих DNS-Серверов (RBL)
В административном интерфейсе Communigate открываем следующую вкладку:
Установки -> Сеть -> Блокировки
Включаем "Использовать Блокирующие DNS-Сервера (RBL)" и записываем адреса днс в графы. Мы используем следующие адреса:
Устанавливаем значение "Блокировать" в разделе "Письма с Блокированных Адресов"
Неблокируемые Адреса (Белые Дыры)
; mail.rustest.ru 213.79.68.66 ; mail.belkult.ru (no PTR) 82.151.110.147 ; mail.tspu.tula.ru (no PTR) 94.25.83.201 ; mx1.vspu.ru (no PTR) 83.167.86.3 ; ns.vgta.vrn.ru (no PTR) 93.88.139.1 ; csr.csrs.ru (no PTR) 77.108.127.27 ; post.rsreu.ru (no PTR) 82.179.89.3 ; LiveJournal 208.93.0.128 208.93.0.50 ; mail.zhivagobank.ru (no PTR) 95.83.158.20 ; aeroflot.ru (bad reverse-check behavior) 89.208.33.137
Неблокируемые по DNS-именам
Установки -> Сеть -> Блокировки
Включаем "Вычислять Неблокируемые по DNS-именам"
*.rsu.edu.ru *.amazon.com *.freshmeat.net *.intel.com *.gmail.com *.gnu.org *.mail.ru *.yandex.ru *.mail.yandex.net *.rambler.ru *.subscribe.ru *.ibm.com *.hotmail.com *.sotcom.ru *.ryazan.su *.ryazan.ru *.novell.com *.sun.com *.livejournal.com *.vkontakte.ru *.pochta.ru *.udsu.ru *.rsr-online.ru *.post.rzn.ru *.nsu.ru *.mac.com *.rustest.ru *.nnm.ru *.icq.com *.neweurasia.ru *.ministry.ru *.zhivagobank.ru mail.fudan.edu.cn *.prometeus.ru *.mgimo.ru *.vspu.ru *.google.com *.cisco.com *.bsu.edu.ru *.goethe.de *.goethe.org *.msu.ru *.masterbank.ru *.gapm.ru *.mfpa.ru *.mpsinst.ru *.yahoo.com *.pinro.ru *.sunrav.ru *.vgta.vrn.ru *.rosim.ru
Использование механизма SpamTrap
Также к дополнению к предыдущим методам, можно использовать Spamtrap. Communigate Pro имеет встроенный механизм "ловушек для спама", который заключается в создании нескольких ящиков-переадресаторов на специальный служебный адрес "spamtrap". Письма, приходящие на этот ящик будут автоматически распознаваться как спам и удаляться из всех аккаунтов пользователей. Для эффективной работы этого механизма стоит размещать ссылку на этот адрес на тех же ресурсах, где находятся реально существующие ящики пользователей, чтобы спам-боты индексировали их одновременно.
При наличии пары-тройки лишних доменов можно указать пересылать почту для неизвестных на spamtrap'ы. Это позволяет эффективно блокировать спамеров, подбирающих почтовые ящики пользователей по словарям.
Посмотреть на какие spamtrap'ы приходит больше всего писем можно командой:
grep spamtrap /var/CommuniGate/SystemLogs/*.log | awk '{ print $11; }' | sort | uniq -c | sort -n -r | head
SpamAssassin
Набор правил для русскоязычного спама: http://sa-russian.narod.ru/
Качаем и кладем в каталог:
/var/lib/spamassassin/<ver>/updates_spamassassin_org/
Первоначальный тюнинг
По совету из конфигурационного файла cgpav.cfg ставим следующий параметр:
score MIME_MISSING_BOUNDARY 0
Необходимость отключения данной проверки вызвана тем, что cgpav обрезает большие письма до 50K (по-умолчанию) перед передачей фильтру spamassassin, что приводит к ложному срабатыванию и, иногда, ложной классификацией писем со вложениями в качестве спам-сообщений.
Добавим больше доверия прошедшим spf-проверку
score SPF_PASS -2.0
Auto-whitelist
Настраиваем auto_whitelist, что в терминологии spamassassin означает, что будут высчитываться средние оценки для отправителя.
В коносли делаем следущее:
mkdir /etc/mail/spamassassin/auto-wl/ chmod 777 /etc/mail/spamassassin/auto-wl/ touch /etc/mail/spamassassin/auto-wl/auto-whitelist chmod 666 /etc/mail/spamassassin/auto-wl/auto-whitelist
Прописываем в конфигурационном файле:
auto_whitelist_path /etc/mail/spamassassin/auto-wl/auto-whitelist auto_whitelist_file_mode 0666
Если что-то неправильно с правами доступа, то в файле /var/log/mail появятся такие строчки:
mail spamd[582]: auto-whitelist: open of auto-whitelist file failed: auto-whitelist: cannot open auto_whitelist_path /etc/mail/spamassassin/auto-wl/auto-whitelist: Permission denied
Исключения для рассылок и важных доменов
whitelist_from *@subscribe.ru whitelist_from *@rustest.ru whitelist_from *@neweurasia.ru whitelist_from *@mac.com whitelist_from *@staff.mesi.ru whitelist_from *@transtk.ru whitelist_from *@col.ru whitelist_from *@rsr-online.ru whitelist_from *@post.rzn.ru whitelist_from *@zhivagobank.ru whitelist_from *.sovcombank.ru whitelist_from *@bti.secna.ru whitelist_from *@rcic.altai.ru whitelist_from *.nsu.ru whitelist_from *@sgu.ru whitelist_from *@dspl.ru whitelist_from *@csu.ru whitelist_from *@psu.ru whitelist_from *@vsu.by whitelist_from *@sgap.ru whitelist_from *.rsu.ru whitelist_from *.udsu.ru whitelist_from *@ministry.ru
Правила для проверки результатов встречного соединения (reverse connect)
/etc/mail/spamassassin/local.cfheader REV_CHECK_DROPPED X-Reverse-Check =~ /connection closed by peer/ describe REV_CHECK_DROPPED Reverse check connection of sender mail address closed by remote server score REV_CHECK_DROPPED 4 header REV_CHECK_FAILED X-Reverse-Check =~ /address rejected with reverse-check/ describe REV_CHECK_FAILED Reverse check of sender mail address rejected by remote server score REV_CHECK_FAILED 4.5 header REV_CHECK_NORELAY X-Reverse-Check =~ /no relay available/ describe REV_CHECK_NORELAY No relay available for reverse check score REV_CHECK_NORELAY 4.5 header REV_CHECK_NORESP X-Reverse-Check =~ /no response/ describe REV_CHECK_NORESP No response from remote server to reverse check of sender mail address score REV_CHECK_NORESP 4 header REV_CHECK_PROTOERR X-Reverse-Check =~ /reverse check protocol error/ describe REV_CHECK_PROTOERR Reverse check protocol error on remote server score REV_CHECK_PROTOERR 4 header REV_CHECK_REFUSED X-Reverse-Check =~ /connection refused/ describe REV_CHECK_REFUSED Reverse check of sender mail address refused by remote server score REV_CHECK_REFUSED 4.5 header REV_CHECK_TIMEOUT X-Reverse-Check =~ /read time-out/ describe REV_CHECK_TIMEOUT Reverse check of sender mail address timed out score REV_CHECK_TIMEOUT 4
DNSWL
При желаниии можно включить данный сервис
Сервис DNSWL [14] представляет собой т.н. анти-rbl: список известных легитимных почтовых серверов. Сервис используется для уменьшения процента ложных срабатываний при обработке почты анитиспам-фильтрами. Сервера интернета делятся на 4 зоны:
- High никогда не пересылали спам
- Medium черезвычайно редкие спам-рассылки, быстро реагируют
- Low изредка рассылают спам, реагируют в приемлимое время
- None легитимные сервера, которые кроме писем так же могут рассылать спам
Модификация /etc/mail/spamassassin/local.cf:
header __RCVD_IN_DNSWL eval:check_rbl('dnswl-firsttrusted', 'list.dnswl.org.')
header RCVD_IN_DNSWL_LOW eval:check_rbl_sub('dnswl-firsttrusted', '127.0.\d+.1')
describe RCVD_IN_DNSWL_LOW Sender listed at http://www.dnswl.org/, low trust
tflags RCVD_IN_DNSWL_LOW nice net
header RCVD_IN_DNSWL_MED eval:check_rbl_sub('dnswl-firsttrusted', '127.0.\d+.2')
describe RCVD_IN_DNSWL_MED Sender listed at http://www.dnswl.org/, medium trust
tflags RCVD_IN_DNSWL_MED nice net
header RCVD_IN_DNSWL_HI eval:check_rbl_sub('dnswl-firsttrusted', '127.0.\d+.3')
describe RCVD_IN_DNSWL_HI Sender listed at http://www.dnswl.org/, high trust
tflags RCVD_IN_DNSWL_HI nice net
score RCVD_IN_DNSWL_LOW -1
score RCVD_IN_DNSWL_MED -10
score RCVD_IN_DNSWL_HI -100
Другие правила в local.cf
Полный список наших правил (на 06.07.2011):
# Правило на рашу федерашу, фашисты взвинтили score в конфиге
# по-умолчанию до такой степени, что все наши письма для них
# теперь спам. Но это, к счастью, поправимо.
score FSL_RU_URL 0.0001 0.0001 -1.0 -1.0
auto_whitelist_path /etc/mail/spamassassin/auto-wl/auto-whitelist
auto_whitelist_file_mode 0666
use_razor2 1
use_pyzor 1
# Our university
whitelist_from_rcvd *@rsu.edu.ru rsu.edu.ru
whitelist_from_rcvd *@rspu.ryazan.ru rsu.edu.ru
whitelist_from_rcvd *@ttc.ryazan.ru rsu.edu.ru
whitelist_from_rcvd *@www.rsu.edu.ru rsu.edu.ru
whitelist_from_rcvd *@proxy.rsu.edu.ru rsu.edu.ru
# whitelist subscribe.ru:
whitelist_from_rcvd *@subscribe.ru subscribe.ru
whitelist_from_rcvd *@sura.ru mail.sura.ru
# Удмуртский госуниверситет
whitelist_from_rcvd *@uni.udm.ru udsu.ru
# Рязанский радиотехнический
whitelist_from_rcvd *@rsreu.ru post.rsreu.ru
# Novell
whitelist_from_rcvd *@novell.com novell.com
# 163.com - китайский "Яндекс"
whitelist_from_rcvd *@163.com 163.com
whitelist_from_rcvd *@sfpgu.ru mail.sfpgu.ru
# ЦентрТрансТелеком
whitelist_from_rcvd *@centrettc.ru centrettc.ru
# МТТ
whitelist_from_rcvd *@mtt.ru mtt.ru
whitelist_from_rcvd *@unicreditgroup.ru unicreditgroup.ru
# N-Link
whitelist_from_rcvd *@nlink.ru nlink.ru
# АйПи-Тех
whitelist_from_rcvd *@iptechs.ru nlink.ru
# Системный интегратор Элетек
whitelist_from_rcvd *@eletek.ru eletek.ru
whitelist_from_rcvd *@mail.zakazrf.ru mail.zakazrf.ru
# Рязанская электросвязь
whitelist_from_rcvd *@mail.ryazan.ru mail.ryazan.ru
# Полярный институт
whitelist_from_rcvd *@pinro.ru pinro.ru
# Мейлрушечка
whitelist_from_rcvd *@mail.ru mail.ru
whitelist_from_rcvd *@list.ru mail.ru
whitelist_from_rcvd *@bk.ru mail.ru
# Яндекс
whitelist_from_rcvd *@yandex.ru yandex.ru
whitelist_from_rcvd *@narod.ru yandex.ru
# Гуголь
whitelist_from_rcvd *@gmail.com google.com
# Yahoo!
whitelist_from_rcvd *@yahoo.com yahoo.com
# SourceForge
whitelist_from_rcvd *@lists.sourceforge.net lists.sourceforge.net
# SunRav
whitelist_from_rcvd *@sunrav.ru kyoto.hostforweb.net
# Воронежская Государственная Технологическая Академия
whitelist_from_rcvd *@vgta.vrn.ru vgta.vrn.ru
# Живаго-банк
whitelist_from_rcvd *@zhivagobank.ru mail.zhivagobank.ru
whitelist_from_rcvd *@mail.zhivagobank.ru mail.zhivagobank.ru
# CGP Russial maillist
whitelist_from_rcvd *@mx.ru mx.demos.su
# В соотв-ии с РД №15-240 от 28.01.2011 Мин-ва обр-я РФ
# ------------------
# Адрес техподдержки системы ИАС "Мониторинг":
# support@is-mon.ru
# +7 (965) 226-28-53
# ------------------
whitelist_from_rcvd *@is-mon.ru mail.miigaik.ru
whitelist_from_rcvd *@forest.ru mail.forest.ru
whitelist_from_rcvd *@biodiversity.ru mail.biodiversity.ru
whitelist_from_rcvd *@assist.ru smtp.assist.ru
# Мегаплан
whitelist_from_rcvd *@megaplan.ru megamonstr.megaplan.ru
# Госзакупки
whitelist_from_rcvd *@zakupki.gov.ru zakupki.gov.ru
# Мегафон-Центр
whitelist_from_rcvd *@megafoncenter.ru mail.megafoncenter.ru
whitelist_from *@rustest.ru
whitelist_from *.neweurasia.ru
whitelist_from *@neweurasia.ru
whitelist_from *@mac.com
whitelist_from *@staff.mesi.ru
whitelist_from *@transtk.ru
whitelist_from *@col.ru
whitelist_from *@rsr-online.ru
whitelist_from *@post.rzn.ru
whitelist_from *.sovcombank.ru
whitelist_from *@bti.secna.ru
whitelist_from *@rcic.altai.ru
whitelist_from *.nsu.ru
whitelist_from *@sgu.ru
whitelist_from *@dspl.ru
whitelist_from *@csu.ru
whitelist_from *@psu.ru
whitelist_from *@vsu.by
whitelist_from *@sgap.ru
whitelist_from *.rsu.ru
whitelist_from *@ministry.ru
whitelist_from *.ministry.ru
whitelist_from *.bsu.edu.ru
whitelist_from *@bsu.edu.ru
whitelist_from *.ibm.ru
whitelist_from *.ibm.com
whitelist_from *@teletesting.ru
whitelist_from *.msu.ru
whitelist_from *@msu.ru
whitelist_from *@forum-media.ru
# Верим в веб-интерфейс Pronto!
header PRONTO X-Mailer =~ /CommuniGate\ Pro\ Pronto/
describe PRONTO Pronto msiler is good
score PRONTO -2.5
# Верим ребятам, сумевшим прописать у себя корректный SPF
header SPF_OK Received-SPF =~ /pass/
describe SPF_OK SPF test passed
score SPF_OK -1.0
# Гуголь
header GOOG Received =~ /.google.com/
describe GOOG google.com is good
score GOOG -4
# Яндекс
header YNDX Received =~ /.yandex.ru/
describe YNDX Yandex is good
score YNDX -4
header YNDX2 Received =~ /.yandex.net/
describe YNDX2 Yandex is good
score YNDX2 -4
# Укаинские мудаки
header ONLINE_UA Received =~ /mail.online.ua/
describe ONLINE_UA mail.online.ua is a SPAM relay
score ONLINE_UA 4
# Питерские мудаки
header INTERZET Received =~ /mail.interzet.ru/
describe INTERZET mail.interzet.ru is a SPAM relay
score INTERZET 4
# 99% спама и 1% уродских прог шлют почту без заголовка "To:" в header'ах
header HAVE_TO_HEADER exists:To
meta NO_TO_HEADER !HAVE_TO_HEADER
describe NO_TO_HEADER There is no To header
score NO_TO_HEADER 4
# Ужас под названием smtp[0-9]+.orange.fr, спама 90%, smtp-сервер
# для половины Франции.
header ORANGE_FR Received =~ /.orange.fr/
describe ORANGE_FR smtp.orange.fr is a SPAM relay
score ORANGE_FR 4
# This test works badly with cgpav, who cuts messages larger than 50K
score MIME_MISSING_BOUNDARY 0
# Cool rule, checking if both of sender & receiver of message are not in our domain
header WOOD_FROM From =~ /rsu.edu.ru/i
header WOOD_TO1 To =~ /rsu.edu.ru/i
header WOOD_TO2 To =~ /rspu.ryazan.ru/i
header WOOD_TO3 To =~ /ttc.ryazan.ru/i
#meta WITHOUT_OUR_DOMAIN !WOOD_FROM && (!WOOD_TO1 || !WOOD_TO2 || !WOOD_TO3)
meta WITHOUT_OUR_DOMAIN !WOOD_FROM && !(WOOD_TO1 || WOOD_TO2 || WOOD_TO3)
describe WITHOUT_OUR_DOMAIN Sender and receiver are not in our domain
score WITHOUT_OUR_DOMAIN 2.5
# CGP blacklist-admin@ ruleset - dozen of spammers use this address to spam
header LOCAL_TO_BA To =~ /blacklist-admin\@cgp\.rsu\.edu\.ru/i
describe LOCAL_TO_BA Mail to blacklist-admin@, probably SPAM
score LOCAL_TO_BA 4.5
# Rulestet for checking reverse connection feature of CGP
# ---------------------------------------------------------------
header REV_CHECK_DROPPED X-Reverse-Check =~ /connection closed by peer/
describe REV_CHECK_DROPPED Reverse check connection of sender mail address closed by remote server
score REV_CHECK_DROPPED 4
header REV_CHECK_FAILED X-Reverse-Check =~ /address rejected with reverse-check/
describe REV_CHECK_FAILED Reverse check of sender mail address rejected by remote server
score REV_CHECK_FAILED 4.5
header REV_CHECK_NORELAY X-Reverse-Check =~ /no relay available/
describe REV_CHECK_NORELAY No relay available for reverse check
score REV_CHECK_NORELAY 4.5
header REV_CHECK_NORESP X-Reverse-Check =~ /no response/
describe REV_CHECK_NORESP No response from remote server to reverse check of sender mail address
score REV_CHECK_NORESP 4
header REV_CHECK_PROTOERR X-Reverse-Check =~ /reverse check protocol error/
describe REV_CHECK_PROTOERR Reverse check protocol error on remote server
score REV_CHECK_PROTOERR 4
header REV_CHECK_REFUSED X-Reverse-Check =~ /connection refused/
describe REV_CHECK_REFUSED Reverse check of sender mail address refused by remote server
score REV_CHECK_REFUSED 4.5
header REV_CHECK_TIMEOUT X-Reverse-Check =~ /read time-out/
describe REV_CHECK_TIMEOUT Reverse check of sender mail address timed out
score REV_CHECK_TIMEOUT 4
# DNSBL
# -----------------------------------------------------------------
# URL: http://www.barracudacentral.org/rbl/
header __RCVD_IN_BRBL eval:check_rbl('brbl', 'b.barracudacentral.org')
describe __RCVD_IN_BRBL received via a relay in b.barracudacentral.org
header RCVD_IN_BRBL_RELAY eval:check_rbl_sub('brbl', '127.0.0.2')
tflags RCVD_IN_BRBL_RELAY net
describe RCVD_IN_BRBL_RELAY received via a relay rated as poor by Barracuda
score RCVD_IN_BRBL_RELAY 3.00
Проверка наличия ошибок в правилах:
spamassassin --lint
Кнопки спам/не спам в веб-интерфейсе CGP
Скачиваем скрипты с сервера Stalker: ftp://ftp.stalker.com/pub/stuff/noarch/SpamPackage-scripts.tar.gz и устанавливаем по инструкции.
В административном веб-интерфейсе идем Пользователи -> Центральный Справочник, находим "Дополнительные Установки Пользователя" и в группу "Системные" добавляем 2 занчения:
SpamFilterEnabled SpamFilterLevel
Редактируем скрипты из пакета SpamPackage, устанавливаем корректный пароль Postmater'a и редактируем название папки для спама, а так же меняем адерса для жалоб на локальные ящики SpamAssassin
Дальше, создаем папку и устанавливаем права:
mkdir /var/CommuniGate/CGI chown root:mail /var/CommuniGate/CGI
Копируем в нее указанные скрипты с правами 0755
В административном веб-интерфейсе идем Установки -> Услуги -> HTTPU и добавляем в раздел "CGI Программы":
- CGI Каталог: /var/CommuniGate/CGI
- Расширение имени файла: pl
- Программа-Интерпретатор: /usr/bin/perl -w
В папке /opt/CommuniGate/WebSkins/Simplex находим файл strings.data и меняем следующие параметры:
- prefJunkMailboxName = "SPAM";
- SpamPackageEnabled = "Yes";
- SpamRecipient = "learn-spam@имя-домена";
- NotSpamRecipient = "learn-ham@имя-домена";
LDAP
Аутентификация пользователей на прокси-сервере Squid
Communigate можно использовать в связке с proxy-сервером squid
В настойках communigate:
Включаем Управление Пользователями через LDAP:
Пользователи -> Центральный справочник
Управление Пользователями через LDAP: Включено
Проверка:
squid_ldap_auth -b "cn=domain.name" cgp-server.com
Должно выдавать OK/ERR на plaintext-строку "имя пароль"
В конфигурационном файле squid.conf:
# (CommuniGate LDAP) auth_param basic program /usr/sbin/squid_ldap_auth -b "cn=example.com" cgp.example.com auth_param basic children 10 auth_param basic realm RSU proxy-server auth_param basic credentialsttl 2 minutes
(Подробнее: Настройка_SQUID#CommuniGate_Pro)
Firewall
На хосте (SLES) в файле /etc/sysconfig/SuSEfirewall2 добавляем следующие строки:
FW_SERVICES_EXT_TCP="21 25 53 80 110 143 387 443 465 587 636 674 993 995 1024:65535" FW_SERVICES_EXT_UDP="53 69 1024:65535"
Для того, чтобы защитить хост от брута по ssh в этом же файле делаем следующие изменения:
FW_SERVICES_ACCEPT_EXT="0.0.0.0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"
На роутере (SLES) для белой сети для каждого из ip-адресов, назначенных серверу:
/etc/sysconfig/SuSEfirewall2
FW_FORWARD="0/0,91.203.180.144/28,tcp,25 \
0/0,91.203.180.144/28,tcp,80 \
0/0,91.203.180.144/28,tcp,119 \
0/0,91.203.180.144/28,tcp,443 \
0/0,91.203.180.144/28,tcp,465 \
0/0,91.203.180.144/28,tcp,587 \
0/0,91.203.180.144/28,tcp,993 \
0/0,91.203.180.144/28,tcp,3478 \
0/0,91.203.180.144/28,udp,3478 \
0/0,91.203.180.144/28,tcp,3479 \
0/0,91.203.180.144/28,udp,3479 \
0/0,91.203.180.144/28,tcp,5060 \
0/0,91.203.180.144/28,udp,5060 \
0/0,91.203.180.144/28,tcp,5061 \
0/0,91.203.180.144/28,udp,5061 \
0/0,91.203.180.144/28,tcp,5222 \
0/0,91.203.180.144/28,udp,5222 \
0/0,91.203.180.144/28,tcp,5223 \
0/0,91.203.180.144/28,udp,5223 \
0/0,91.203.180.144/28,tcp,5269 \
0/0,91.203.180.144/28,udp,5269 \
0/0,91.203.180.144/28,tcp,11024:11025 \
0/0,91.203.180.144/28,tcp,60000:60099 \
0/0,91.203.180.144/28,udp,60000:60999 \
Подробнее о портах:
- 25 и 587 - SMTP
- 993 - IMAP (ssl)
- 80 и 443 - веб-интерфейс пользователя http, https
- 3478 и 3479 - STUN
- 5060, 5061 - SIP
- 5222, 5223, 5269 - Jabber/XMPP
- 11024:11025 и 60000:60999 - голосовой трафик RTP
Коммуникации реального времени
Медиа плагин для браузеров Internet Explorer, Firefox, Chrome и Safari доступен по адресу: http://www.communigate.com/MediaPlugin/
Хитрости Маршрутизатора
Выделяем целый домен под spamtrap's:
M:<*@example.com> = spamtrap
Маршрутизация телефонии:
<911@*> = emergency@localhost ; 911: NA emergency
<112@*> = emergency@localhost ; 112: EU emergency
<01@*> = emergency@localhost ; 01: RU emergency
S:<emergency> = emergency#pbx ; start 'emergency' app
<7(2d)@*> = pbx{*}#pbx ; 7nn calls go to PBX
<(4d)@*> = *@telnum ; пусть нумерация 4-значными будет сквозной
<(6d)@*> = +74912*@telnum ; костылик для 6-значных
<(10d)@*> = +7*@telnum ; считаем 10-значные российскими
<+(5-15d)@*> = +*@telnum
<+(d)@*> = +*@telnum ; прямой +номер в e164 домен "telnum"
<8(10d)@*> = +7*@telnum ; костыль для звонящих через 8-ку
telnum = e164.arpa.enum ; прямой +номер в e164.arpa
S:e164.arpa.noenum = pstn
S:<+7(10d)@pstn> = gatewaycaller{8*,nlink}#postmaster@localhost
S:<8(10d)@pstn> = gatewaycaller{8*,nlink}#postmaster@localhost
S:<(5-15d)@pstn> = gatewaycaller{*,nlink}#postmaster@localhost
S:<(4d)@pstn> = pbx#pbx@localhost
Входящие телефонные звонки
E.164
https://mail.istu.ru/Guide/russian/Router.html#ENUM
Подключаем ENUM-домены:
- e164.arpa
- e164.org
- e164.info
- enum.org
<+(d)@*> = +*@telnum ; прямой +номер в e164 домен "telnum" <8(10d)@*> = +7*@telnum ; костыль для звонящих через 8-ку telnum = e164.arpa.enum ; прямой +номер в e164.arpa S:e164.arpa.noenum = pstn
Проверить работоспособность номеров в E.164 можно при помощи сервиса http://enumquery.com/
Входящие звонки
В Маршрутизаторе укажем, что входящий звонок с многоканального номера перенаправляем на PBX нужного домена:
<out_login_at_ext_service@main_domain_ip> = pbx{*}#pbx@example.com
Создаем в интересующем нас домене пользователя pbx с псевдонимами 200 и conference. Даем ему права доступа:
- Может менять установки Этого Домена и его Пользователей
- Полный доступ ко всем Файлам
- Может выступать от имени других
Во вкладке Real-Time добавляем правило PBX Center starter со следющим содержимым:
Данные --- Равно: Действие: Перенаправить к Параметр: #pbx
Во вкладке Прочее выбираем параметры Directory Prefix равным числу, с которого начинаются внутренние тлф. номера пользователй и Directory Digits равным общему числу цифр во внутреннем номере.
Программирование PBX-приложений на CG/PL:
QoS
Procurve 5304xl
Для SIP-трафика в консоли свитча:
conf qos tcp-port 5060 priority 6 qos udp-port 5060 priority 6
Проверка:
sh qos tcp-udp-port-priority
Выбираем VLAN для голосового трафика и поднимаем ему приоритет:
conf vlan XX qos priority 6
Проверка:
sh qos vlan-priority
Записываем изменения во flash-память:
write mem
SIP/Jabber
DNS записи являются типичным источником ошибок конфигурации SIP и XMPP.
Так же, как записи e-mail и MX, они представляют собой особый тип DNS-записей для маршрутизации и приоритезации SIP и XMPP. Такие записи называются служебными или "SRV" записями.
Используя утилиты DNS-резолвинга, такие как "dig", "nslookup", и д.р. можно запросить эти записи для лучшего понимания маршрутизации SIP и XMPP. Синтаксис сначала молжет показаться немного чудным, так как он использует application protocol (_sip) и IP protocol (_udp) компоненты:
Code:
$ dig SRV _sip._udp.versature.com ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31515 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 10 ;; QUESTION SECTION: ;_sip._udp.versature.com. IN SRV ;; ANSWER SECTION: _sip._udp.versature.com. 6611 IN SRV 10 0 5060 login.versature.com.
Нужно отметить, что в данном примере ответ содержет (по крайней мере) три важные информационные части: 10 - приоритет сервера по сравнению c возможными другими серверами для той же записи 5060 - порт к которому осуществляется подключение
login.versature.com - имя сервера
Также возможны множественные записи:
Code:
$ dig SRV _sip._udp.communigate.com ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40722 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 7 ;; QUESTION SECTION: ;_sip._udp.communigate.com. IN SRV ;; ANSWER SECTION: _sip._udp.communigate.com. 3600 IN SRV 0 0 5060 post.communigate.com. _sip._udp.communigate.com. 3600 IN SRV 1 0 5060 site.communigate.com.
В данном примере сервер "post.communigate.com" имеет приоритет "0" и поэтому он выше, чем у сервера site.communigate.com.
SIP UDP клиенты должны попытаться соединиться сначала с post.communigate.com, а лишь потом с site.communigate.com.
Далее следует пример полной DNS-записи для SIP и XMPP для вымышленного домена "example.com", использую синаксис BIND:
Code:
example.com IN SOA ns.example.com. postmaster.example.com. ( 2007042300 ; Serial 36000 ; Refresh 9000 ; Retry 3600000 ; Expire 36000) ; Minimum ; SIP _sip._udp 3600 IN SRV 10 0 5060 mail.example.com. _sip._tcp 3600 IN SRV 10 0 5060 mail.example.com. _sips._tcp 3600 IN SRV 10 0 5061 mail.example.com. _sips._udp 3600 IN SRV 10 0 5061 mail.example.com. ; XMPP _xmpp-server._tcp 3600 IN SRV 10 0 5269 mail.example.com. _xmpp-server._udp 3600 IN SRV 10 0 5269 mail.example.com. _xmpp-client._tcp 3600 IN SRV 10 0 5222 mail.example.com. _xmpp-client._udp 3600 IN SRV 10 0 5222 mail.example.com. _jabber._tcp 3600 IN SRV 10 0 5269 mail.example.com. _jabber._udp 3600 IN SRV 10 0 5269 mail.example.com. _jabber-client._tcp 3600 IN SRV 10 0 5222 mail.example.com. _jabber-client._udp 3600 IN SRV 10 0 5222 mail.example.com.
IP-телефоны Linksys
Основная статья: Linksys
Софтофоны
Основная статья: IP-телефон на ПК (Софтофон)
Софтофон веб-клиента Pronto!
| Это незавершённая статья, требующая доработки. Описать как пользоваться, как ставить media plugin, какие порты д.б. открыты на брандмауере. |
Apple iChat
Реализация для обычного 3rd-party клиента (iChat) на сервере очень проста.
- Включите приемники XMPP на CGP сервере
- Settings->RealTime-> XMPP->Recieving->Listener
- Откройте порты 5222 (SSL off), 5223 (SSL on), 5269 (SSL off).
- Проверьте, что приемник CGP работает. В *nix и Mac используйте "netstat -lnp | grep 522" и проверьте, что CGServer ожидает соединения.
- Проверьте, включен ли XMPP для доменных пользователей.
- Выберите аккаунт пользователя в интерфейсе администратора. Убедитесь, что в Enabled Services есть запись: +XMPP. Если же теё нет, включите её, выбрав Domain Settings и включив её (для всех доменов сервера)
- Открыть порты на фаерволе (сервер и сеть)
- TCP для всех указанных выше портов.
- Настройте клиент для подключения к серверу.
- Следуйте инструкциям "iChat as your IM client" на http://www.communigate.com/main/tips/
ТЕСТИРОВАНИЕ
Способности SpamAssasin распознавать спам
spamassassin -t < sample-spam.txt > /tmp/sample-spam.txt spamassassin -t < sample-nonspam.txt > /tmp/sample-nonspam.txt
Работа clamav через cgpav
Скопируйте тестовый вирус eicar.com в директорию /var/CommuniGate и запустите cgpav:
cd /var/Communigate wget "http://www.eicar.org/download/eicar.com" ./cgpav
Появится консоль ввода фильтра.
Введите:
1 FILE eicar.com
cgpav работает нормально если вы видите
1 ERROR "WARNING! Your message was infected by VIRUS: EICAR-AV-Test"
Или же, программа может по каким-то причинам не найти вирусов
1 OK
1 REJECTED "Antiviral filter unavailable. Will try later"
Отказоустойчивость
В целях надежного прохождения почты и уменьшения перебоев, связанных с авариями на каналах связи, почтовый сервер подключен к двум независимым провайдерам и имеет 2 белых ip-адреса. В DNS внесены оба адреса в качестве mx-записей домена.
Насторойка ОС
Порядок действий для SLES 9 SP3:
Добавляем 2 строчки в файл /etc/iproute2/rt_tables
9 viainet1 10 viainet2
Создаем в /etc/sysconfig/network каталог iproute2, в него кладем файл iproute2_custom (chmod +x):
#!/bin/bash IP2=xxx.xxx.xxx.xxx # ip от провайдера 1 IP3=yyy.yyy.yyy.yyy # ip от провайдера 2 P1=iii.iii.iii.iii # дефолтный шлюз P2=jjj.jjj.jjj.jjj # шлюз провайдера 1 P3=kkk.kkk.kkk.kkk # шлюз провайдера 2 ip route replace default via $P2 table viaesv ip route replace default via $P3 table viacttc ip rule add from $IP2 table viainet1 ip rule add from $IP3 table viainet2 #ну и дефолтный маршрут: ip route add default via $P1
Делаем символическую ссылку на этот файл в каталоге /etc/sysconfig/network/if-up.d:
ln -s /etc/sysconfig/network/iproute2/iproute2_custom /etc/sysconfig/network/if-up.d/iproute2_custom
Теперь машина отвечает на пинги по на оба внешних ip.
АДМИНИСТРИРОВАНИЕ
Приветственное письмо новым пользователям системы
Идем в Пользователи -> Домены -> (домен) -> Объекты -> Шаблон и по инструкции создаем шаблон письма для пользователей, чтобы они помнили о нашей заботе и опеке.
Следует помнить, что напрямую русские символы в заголовках письма использовать нельзя.
| Это незавершённая статья, требующая доработки. Описать способ получения легитимного заголовка письма с русскими буквами: perl-скрипт или генерация почтовым клиентом. |
Миграция пользователей со старой платформы
Старая почтовая система авторов построена на базе Postfix+Courier-IMAP с доступом пользователей через pop/smtp/imap и web-интерфейс squirrelmail. Информация о пользователях хранится в БД MySQL.
Процесс миграции включает в себя:
- Экспорт информации о аккаунтах старой системы в текстовый файл
- Создание аккаунтов пользоватей по шаблону на новой системе
- Миграция дерева папок IMAP и почтовых сообщений со старого сервера на новый
- Изменение dns-зон
Итак, приступим:
Экспорт информации о аккаунтах старой системы в текстовый файл
Формат импорта/экспорта communigate предполагает поля, разделенные знаком табуляции. В первой строчке указываются наименования полей.
Скрипт:#!/bin/bash MHOST="127.0.0.1" LOGIN="sqllogin" PASS="sqlpass" QUERY=" SELECT login, name, password FROM users;" mysql -h $MHOST --execute="$QUERY" --database="dbname" --user="$LOGIN" --password="$PASS" | \ awk -F "|" \ 'BEGIN { \ print "Name" "\t" "RealName" "\t" "Password" \ } { printf("%s\t%s\t%s\n",$1,$2,$3); }' | iconv -f koi8-r -t utf-8 > account_list.txt
Создание аккаунтов пользоватей по шаблону на новой системе
В административном интерфейсе communigate:
Пользователи -> Домены -> Имя_домена -> Объекты
Выбираем "Импортировать" указав путь к файлу
Миграция дерева папок IMAP и почтовых сообщений со старого сервера на новый
Communigate предоставляет утилиты для миграции. Они находятся в каталоге /opt/CommuniGate/Migration:
Команда:
./MoveAccounts --IMAP account_list.txt old_imap_ip communigate_domain_ip
Через некоторое время вся информация пользователей будет перенесена.
Модификация интерфейса Pronto!
Можно при необходимости заменить логотипы Communigate на свои собственные загрузив в папку со скином Pronto следующие файлы [2]:
- loginlogoimage.png
Главный логотип на странице входа. Размер: 350x117 пикселей, фон: прозрачный.
- loginimage.png
"screenshot image" на странице входа. Размер 440x340 пикселей, фон: непрозрачный.
- logosmallimage.png
Логотип в левом верхнем углу на странице входа. Размер: 90x30 пикселей, фон: прозрачный.
- customlogosmall.png
Логотип CommuniGate Pro с обрамлением в правом нижнем углу экрана почтовой системы. Размер: 90x30 пикселей, фон: прозрачный.
- customlogomedium.png
Логотип CommuniGate Pro с обрамлением на странице входа. Размер: 145x50 пикселей, фон: прозрачный.
Почта к нам и от нас
Общие рекомендации
Чтобы почта с сервера доходила до адресатов в интернете:
- все ip-адреса почтовых релеев должны быть обязательно прописаны в обратной dns-зоне;
- "Greeting name" почтового сервера должен соответсвовать его dns-имени;
- необходимо читать сообщения, приходящие на abuse@, и своевременно на них реагировать;
- уменьшить время повторов посылки и увеличить количество попыток хотя бы для первого часа, это поможет уменьшить задержки до севреров, использующих greylisting. При времени повтора 1 час и выше почта рискует быть доставленной не за одни сутки;
В качестве рекомендуемой меры можно зарегистировать свою сеть (или конкретно почтовые сервера) в DNSWL и EmailReg.org
Однако следует понимать, что всегда в интернете найдется сервер который не захочет принимать почту от нас. Авторам в свое время попался американский почтовый сервер, возвращавший письма с объяснением вида "550 E-mail from Russia. Bye!"
Стандартные e-mail адреса
Для взаимодействия с сетью интернет серверу крайне желательно содержать определенное число стандартных адресов[15] (RFC 2142).
В нашем случае используются адреса:
- abuse@ для жалоб
- webmaster@ для обратной связи с сайтов (RFC 2068)
- info@ по общим вопросам
- noc@ и support@ для связи с техперсоналом
- hostmaster@ для вопросов, связанных с DNS (RFC 1033 - RFC 1035)
- clockmaster@ для вопросов, связанных с сервером NTP
SPF записи в DNS
Для домена [16]:
example.com. IN TXT "v=spf1 mx ~all"
Для почтового сервера:
mail IN TXT "v=spf1 a -all"
Это поможет пользователям получать почту от нас.
Как посмотреть на какие домены шлют почту пользователи?
Просто список доменов (для скриптов):
grep 'SMTP.\+sent to.\+got:250' /var/CommuniGate/SystemLogs/*.log | awk -F "[ ,(,)]" '{ print $4; }' | sort | uniq
Список доменов, наглядный с числом отосланных писем (для отчетов):
grep 'SMTP.\+sent to.\+got:250' /var/CommuniGate/SystemLogs/*.log | awk -F "[ ,(,)]" '{ print $4; }' | sort | uniq -c | sort -r
Десятка самых популярных доменов:
grep 'SMTP.\+sent to.\+got:250' /var/CommuniGate/SystemLogs/*.log | awk -F "[ ,(,)]" '{ print $4; }' | sort | uniq -c | sort -r | awk '{ print $2; }' | head
Как посмотреть куда ломятся вирусы и спамботы?
grep 'SMTPI.\+unknown user account' /var/CommuniGate/SystemLogs/*.log | awk '{ print $5; }' | sort | uniq -c | sort -d
То же самое но десятка лидеров:
grep 'SMTPI.\+unknown user account' /var/CommuniGate/SystemLogs/*.log | awk '{ print $5; }' | sort | uniq -c | sort -d | head
С каких серверов чаще всего письма приходят в СПАМ
| ВНИМАНИЕ! Команда неоптимизирована и выполняется достаточно долго. Другие варианты приветствуются на странице обсуждения статьи. |
find /var/CommuniGate/Domains/example.com/ -type f |grep "SPAM.mdir"| xargs head -n 30 | grep "Received: from "|awk '{ print $3; }'|sort|uniq -c | sort -r
Смотрим, какие сервера используются RPOP
grep "RPOP-" /var/CommuniGate/SystemLogs/*.log | awk -F "[ ,(,)]" '{ print $4; }'|sort|uniq -c
Как проверить, какие MX не хотят принимать почту от нас
grep "Expected 25x <id>, got:550" /var/CommuniGate/SystemLogs/* | awk -F "[(,)]" '{ print $2; }' | sort | uniq -c | sort -n -r
Как узнать кому приходят письма с определенного адреса
/usr/local/bin/cgp-whoreceived.sh
#!/bin/bash # Logfile name WER="2011-10-19.log" # e-mail address of a message WHO="exampleuser@example.org" WUT=`grep $WHO /var/Communigate/SystemLogs/$WER | grep QUEUE | awk '{ print $3; }' | tr -d "[]" | awk -F "[(,)]" '{ print $2; }'` for i in $WUT do grep $i $WER | grep DEQUEUER | awk -F "[(,)]" '{ print $2; }' done
Проверка ip-адреса почтового сервера на наличие в RBL
В сети интернет существует большое число утилит для удобной проверки адресов на попадание в RBL. Можно воспользоваться как одним из on-line сервисов вроде OpenRBL так и скриптами, выполняемыи непосредственно на сервере, к примеру RBLLookup Version 1. Для работы программы необходимы prel-модули
- Net::DNS
- Term::ANSIColor
которые легко устанавливаются через CPAN.
Программа работает следующим образом, из командной строки указываем какой адрес проверить:
./rbl.pl 198.51.100.92и ждем результата.
Так же существуют плагины для подключения к Nagios
Проверка сервера на Open Relay
Для проверки сервера на открытый релей можно пользоваться сайтом http://www.nettools.ru/
Решение проблем
Коды ошибок почтовых серверов
RFC 3463 регламентирует номер кодов ошибок, которыми почтовая система информирует отправителя о недоставке [17] письма получателю, к примеру:
- 5.1.1 (Unknown user),
- 5.2.2 (Mailbox full)
- 5.7.1 (Rejected by security policy/mail filter)
"docx" файлы открываются как zip-папки
Необходимо добавить следующие mime-типы в разделе Установки — Услуги — HTTPU — MIME-типы :
".manifest", "application/manifest" ".xaml", "application/xaml+xml", ".application", "application/x-ms-application", ".deploy", "application/octet-stream" ".xbap", "application/x-ms-xbap" ".docm","application/vnd.ms-word.document.macroEnabled.12" ".docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document" ".dotm","application/vnd.ms-word.template.macroEnabled.12" ".dotx","application/vnd.openxmlformats-officedocument.wordprocessingml.template" ".potm","application/vnd.ms-powerpoint.template.macroEnabled.12" ".potx","application/vnd.openxmlformats-officedocument.presentationml.template" ".ppam","application/vnd.ms-powerpoint.addin.macroEnabled.12" ".ppsm","application/vnd.ms-powerpoint.slideshow.macroEnabled.12" ".ppsx","application/vnd.openxmlformats-officedocument.presentationml.slideshow" ".pptm","application/vnd.ms-powerpoint.presentation.macroEnabled.12" ".pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation" ".xlam","application/vnd.ms-excel.addin.macroEnabled.12" ".xlsb","application/vnd.ms-excel.sheet.binary.macroEnabled.12" ".xlsm","application/vnd.ms-excel.sheet.macroEnabled.12" ".xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ".xltm","application/vnd.ms-excel.template.macroEnabled.12" ".xltx","application/vnd.openxmlformats-officedocument.spreadsheetml.template"
Рутина
Управление аккаунтами
Управление аккаунтами пользователей осуществляется администраторами домена при помощи внешнего java-приложения [18]. java-библиотека и описание функций работы представлены на сайте производителя по адресу: http://www.stalker.com/CGJava/
Вспомогательные perl-скрипты
Сброс всем пользователям размера почтового ящика на установленный "По-умолчанию" в домене
#!/usr/bin/perl -w use CLI; my $cli = new CGP::CLI( { PeerAddr => 'cgp.example.com', PeerPort => 106, login => 'postmaster', password => 'abc123' } ) || die "Can't login to CGPro: ".$CGP::ERR_STRING."\n"; my $domList=$cli->ListDomains() || die "can't list domains"; foreach $domain (sort @$domList) { $AccountList = $cli->ListAccounts($domain) || die "Error: ".$cli->getErrMessage.", quitting"; foreach(keys %$AccountList) { $address = "$_\@$domain"; print "$address\n"; $cli->UpdateAccountSettings($address,{MaxAccountSize => 'Default'}) || die "Error: ".$cli->getErrMessage.", quitting"; } } $cli->Logout;
Работа с пользователями
FAQ для пользователей: CommuniGate_FAQ
FAQ по использованию сервиса от компании Zenon N.S.P. http://www.go.ru/faq.html
Еще о том-же для администраторов сервисов: http://www.host.ru/support/mail/
FAQ почтовой службы Rambler: http://help.rambler.ru/project.html?s=103
Примеры документации для пользователей (нужное!!!): http://unixgeek.nm.ru/guides.html
Списки рассылки
Использование символа "-" в именах списков строго не рекомендуется[19].
Меняем владельца списка рассылки
Это давняя проблема Communigate. Непонятны трудности, из-за которых она до сих пор не решена, но это должно быть довольно сложно, ведь учитывая количество версий, разработчики продолжают игнорировать просьбы клиентов хоть как-то решить эту проблему.
- Воспользуйтесь интерфейсом администратора по адресу http://mail.example.com:8010
- В аккаунте нового владельца создайте новый список рассылки с названием mailing-list-name_new.
- В данных почтового сервера domains/example.com/lists, скопируйте mailing-list-name.* mailing-list-name_new.*0
- Измените настройки mailing-list-name_new.
- Найдите строку owner = old-owner и замените old-owner на new-owner
- Сохраните изменения и выйдите.
- Используйте веб-интерфейс почты для аутентификации под аккаунтом старого владельца
- Выберите папку в качестве списка рассылки
- Выберите настройки для этой папки
- Добавьте нового владельца со всеми правами доступа и примените для всех подпапок
- Выйдите из аккаунта
- Войдите в систему как новый владелец
- Добавьте алиас для старого списка рассылки ~owner-name/mailing-list-name
- Скопируйте содержимое этой папки и всех подпапок в новый список рассылки
- Вернитесь назад и удалите алиас
- Проверьте настройки и список подписчиков, чтобы убедиться, что все в порядке (нажмите Настройки рядом со списком папок).
- Выйдите из аккаунта
- Снова войдите как администратор
- Переименуйте старый список в mailing-list-name_old
- Переименуйте новый список в mailing-list-name
- Удалите старый список.
Графики работы сервера через MRTG
Оригинальная инструкция: http://www.communigate.com/CGMRTG/
В административном интерфейсе cgp Установки -> Услуги -> SNMP вбиваем пароль "public", затем на вкладке приемник выставляем:
Порт: 161 Локальный Сетевой Адрес: 127.0.0.1 Ограничения на удалённые Сетевые Адреса: Нет
Устанавливаем пакет mrtg:
zypper in mrtg
Создаем папку /etc/mrtg куда скачиваем файл http://www.communigate.com/CGMRTG/mrtg.cfg и переименовываем его в cgp.cfg:
mkdir /etc/mrtg cd /etc/mrtg wget http://www.communigate.com/CGMRTG/mrtg.cfg mv mrtg.cfg cgp.cfg
Правим файл. Удаляем строки:
RunAsDaemon: Yes Interval: 5
Заменяем все <community>@<ip> на public@127.0.0.1
В каталоге /usr/local/sbin/ создаем файл run_mrtg_cgp.sh следующего содержания:
#!/bin/bash env LANG=C /usr/bin/mrtg /etc/mrtg/cgp.cfg
В каталоге /etc/cron.d/ создаем файл mrtg:
*/5 * * * * root /usr/local/sbin/run_mrtg_cgp.sh > /dev/null
Идем в папку /var/CommuniGate/Accounts/postmaster.macnt/account.web и генерируем индексный файл:
cd /var/CommuniGate/Accounts/postmaster.macnt/account.web/ indexmaker --output=default.html --columns=1 /etc/mrtg/cgp.cfg
Если в настройках домена индексный файл для аккаунта postmaster установлен не default.html, то переименовываем его в необходимый.
Проверяем работу mrtg запустив
/usr/local/sbin/run_mrtg_cgp.sh
и зайдя браузером по адресу http://mail.example.com/~postmaster/
Должны появиться графики.
Настройка клиентских машин
Расширение для Thunderbird:
Для MS Outlook используем идущий в комплекте MAPI-плагин. Пример настройки клиента: Настройка Microsoft Outlook 2007
Примечания
- ↑ SUSE® Linux Enterprise Server
- ↑ IBM PowerVM. The virtualization platform for UNIX, Linux and IBM i clients
- ↑ IBM System p. Серверы AIX и Linux
- ↑ CommuniGate Pro platform
- ↑ CommuniGate Pro Perl Interface
- ↑ Simple Mail Transfer Protocol. Mail processing model
- ↑ TCP/IP Ports for Internet Services
- ↑ SPF website. How Does SPF Work?
- ↑ Reverse DNS lookup. From Wikipedia, the free encyclopedia
- ↑ The Spamhaus Project - ZEN
- ↑ The CBL
- ↑ Российская система Dial-up User List(DUL)
- ↑ Rambler-mail: insecure-bl.rambler.ru lookup
- ↑ dnswl.org - Protect against false positives
- ↑ Хабрахабр: Кое-что о соглашениях об именах почтовых ящиков / Системное администрирование
- ↑ SPF: SPF Record Syntax
- ↑ Non delivery report. From Wikipedia, the free encyclopedia
- ↑ ftp.rsu.edu.ru/pub/software/cgp/jAdmin/
- ↑ Mailing List CGatePro@mx.ru Message 19141
См. также
Ссылки по теме
Communigate
- http://www.stalker.com/
- http://lang.communigate.com/ru/
- https://support.communigate.com/howto/
- http://www.stalker.com/CGJava/
- http://www.stalker.com/CGPerl/
- ftp://ftp.stalker.com/pub/CommuniGatePro/
- http://unixgeek.nm.ru/
- http://www.mineralogist.ru/oder/communigate/
- http://forum.voxilla.com/communigate-pro-support-forum/
- http://forum.ru-board.com/topic.cgi?forum=5&topic=19377
- https://support.communigate.com/forum/
- http://www.osp.ru/text/print/302/4261.html
SIP/PBX
- http://www.e164.org/
- http://enum.org/
- http://enumquery.com/
- http://mail.communigate.com/~ab/files/25c634725ca170c2413d5ad5faf9a0ce-39.html
- http://freewind.habrahabr.ru/blog/89142/
Списки рассылки
- http://mx.demos.su/lists/cgp-russian/
- http://mx.ru/Lists/CGatePro/List.html?Skin=Russian
- http://mail.stalker.com/lists/cgatepro/
- http://mail.stalker.com/Lists/CGatePro/
Adobe AIR
Скрипты для cgp
- http://cgpro.servicemail24.com/
- http://www.niversoft.com/products/cgscripts/cgscripts
- http://kocmuk.ru/2010/06/08/find-attachments-cgp/
cgpav
SpamAssasin
ClamAV
Механизм проверки SPF
- http://www.openspf.org/
- http://www.host.ru/support/mail/spf.html
- http://www.spamtest.ru/document?pubid=16637&context=1
- http://ru.wikipedia.org/wiki/Sender_Policy_Framework
- http://company.yandex.ru/articles/spf.xml
Проверка на наличие адреса в RBL
Разное
- Проверка валидности e-mail средствами PHP
- http://del.icio.us/foboss/cgp/
- http://robotstxt.org.ru/
- http://www.emailreg.org/
- http://www.barracudacentral.org/
- Is your docx file turning into a zip?
- http://en.wikipedia.org/wiki/Bounce_message
- http://www.niversoft.com/wiki/index/A_Good_Antispam_and_Antivirus_Setup
RFC
Всякое
PBX
ngrep -W byline port 5060
Смотрим, кто вообще пользуется IP-телефонией:
grep sip-gw.address * | grep PBXLEG|awk -F "impersonate=" '{ print $2; }'|awk -F ";" '{ print $1; }'|sort|uniq -c|sort -n
почему у меня возникает ошибка касательно доступа к LDAP после обновления CommuniGate Pro до версии 5.1.8 или более поздней?
LDAP-XXXXXXX([XX.XX.XX.XX]) search failed. Error Code=insufficient directory access rights
По умолчанию, новые версии CommuniGate Pro не разрешают анонимный доступ к Каталогу LDAP. Помимо записей журнала по данному вопросу, вы скорее всего найдете запись в журнале для этой же транзакции, которая демонстрирует попытку привязаться к Каталогу LDAP как 'anyone', то есть анонимно. Если вам нужно разрешить 'anyone' просмотр Каталогов LDAP, вам необходимо изменить права доступа к LDAP с помощью CGP Admin interface. Попав в раздел Directory | Access rights, вы скорее всего обнаружите тип прав 'ReadAll'. Если вы смените BindDN для этих прав с '*' на 'anyone', то анонимный доступ к Каталогу LDAP заработает.
Заметка о безопасности: Анонимный доступ к директории означает, что кто угодно может подключиться к вашему серверу и просматривать содержимое директорий через LDAP. Пожалуйста, имейте это ввиду при изменении настроек.
Автоматический редирект с http на https
Это может быть сделано посредством изменения вашей страницы аутентификации (login.wssp). Поместите это в самое начало файла:
< !--%%IF NOT(secureChannel)--><REDIRECT>https://yourdomain:9100< !--%%ELSE--> ... rest of login page < !--%%ENDIF-->
Но вы не перенаправите и не обслужите страницу аутентификации через https. Вы можете запросто исправить атрибуты события Формы для того, чтобы данные при аутентификации могли бы передаваться через https. (почтовая веб-сессия завершится в режиме httpd). Просто найдите объявление <form> в login.wssp и измените обработчик как показано ниже.
<form action="https://yourdomain:9100" ... >
Perl
# ConvTime(string) # This procedure converts CGPro textual date/time string into UNIX format # (the number of seconds since 00:00:00 UTC, January 1, 1970). sub ConvTime { my ($sec,$min,$hour,$mday,$month,$year); my %mNames=qw(Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11); if($_[0] =~ /(\d{1,2}).(\w\w\w).(\d\d\d\d).(\d\d):(\d\d):(\d\d)/) { $mday=$1; $month=$mNames{$2}; $year=$3-1900; $hour=$4; $min=$5; $sec=$6; } elsif($_[0] =~ /(\d\d)-(\d\d)-(\d\d\d\d).(\d\d):(\d\d):(\d\d)/) { $mday=$1; $month=$2-1; $year=$3-1900; $hour=$4; $min=$5; $sec=$6; } elsif($_[0] =~ /#T(\d\d)-(\d\d)-(\d\d\d\d)_(\d\d):(\d\d):(\d\d)/) { $mday=$1; $month=$2-1; $year=$3-1900; $hour=$4; $min=$5; $sec=$6; } else { die "Unknown date format: \"$_[0]\", quitting"; } return POSIX::mktime($sec,$min,$hour,$mday,$month,$year); }
BIND NAPTR DNS конфигурация для ENUM с расширениями
это содержимое для x.x.x.x.e164.arpa файла
$TTL 1800
@ IN SOA ns.core.at. hostmaster.xx.xx. (
2007070801
10000
3600
604800
1800)
@ IN NS ns.xx.xx.
IN NS ns2.xx.xx.
@ IN NAPTR 5 10 U E2U+sip "!^.*$!sip:pbx@SIPHOST!".
@ IN NAPTR 5 15 U E2U+email:mailto "!^.*$!mailto:pbx@SIPHOST!".
@ IN NAPTR 5 20 U E2U+web:http "!^.*$!http://www.xxx.com!".
@ IN NAPTR 10 10 U E2U+tel "!^.*$!tel:\+43xxxxxx!".
*.0.1.0.1.0.8.0.8.7.3.4.e164.arpa. IN NAPTR 5 10 U E2U+sip "!^\\+43xxxxxx([0-9][0-9])$!sip:\\1@SIPHOST!".
*.0.1.0.1.0.8.0.8.7.3.4.e164.arpa. IN NAPTR 10 10 U E2U+tel "!^\\+43xxxxxx([0-9][0-9])$!tel:\+43xxxxxx\\1!".
замените SIPHOST с FQDN вашего сервера (for example sip.core.at) замените +43xxxxx вашим enum-номером (+43780801010)
С такой конфигурацией вы получите расширения от 01 до 99 - если вам нужно добавить больше одного раза [0-9] в NAPTR-запись.
| |
[ + ] Сеть
|
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||||||||||
|
[ + ] Платформа унифицированных коммуникаций
|
|---|---|
