Оглавление
- Basic setup of a SOHO server
- SoHo - Software repositories
- SoHo - Alias of loopback interface
- SoHo - IPtables configuration example
- SoHo - Webmin
- SoHo - DNS
- SoHo - VMWare
- SoHo - Windows
- SoHo - OpenVPN
- SoHo - Remote Desktop
- Nameserver on Windows XP forwarding to public DNS with private zones
- SoHO - NTP
- SoHo - SSH
- SoHo - Ubuntu prerequisites
- How to strengthen SSH
- Fixing Nessus complaints
- Java installation on RHEL 4
- Installing vsFTPd on CentOS
- How to setup CA (certificate authority)
- Installation of VIM X11 and archivers on RHEL 4 x86_64
- SoHo - MS & Open-Office
- User management
- CommuniGate Pro
- Backup
- Issue tracking for small groups
- Jabber setup and configuration
- Monitoring & Statistics
- Printing in SOHO
- Faxes in SOHO
- T38 Modem
- PostScript fonts for faxes
- Installing Brother MFU drivers on Ubuntu
- Installing Hylafax client on RHEL4 and Fedora
- Installing Hylafax server on RHEL4
- Installing Hylafax server on Ubuntu
- Integrating Hylafax with CUPS
- Integrating Hylafax with CommuniGate
- Managing Hylafax from Ubuntu client
- How to test faxing
- Drivers for Brother MFUs
- Brand new idea about faxing
- External faxing resources
- Antivirus & Antispam
- Obtaining sample antivirus files
- Clamav on CentOS
- SpamAssassin
- CGPAV: how to integrate antivirus with CommuniGate
- SpamAssassin accessibility
- Antispam settings in CommunigatePro
- Antivirus and Nagios adjustments
- Config files and scripts for antivirus and antispam
- GreyListing (eserv.ru)
- Greylisting: панацея от спама или мыльный пузырь?
- Неприступный почтовый сервер, или жизнь без спама
- External SOHO References
- Supplementary SOHO procedures
CGP - Создаем почтовую систему
- 1. ЗАДАЧА
- 2. ЛИЦЕНЗИРОВАНИЕ
- 3. УСТАНОВКА
- 4.
НАСТРОЙКА
- 4.1. Модификация конфигурационных файлов
- 4.2.
CommuniGate
- 4.2.1. Изменение портов пользовательского web-интерфейса
- 4.2.2. robots.txt / favicon.ico
- 4.2.3. Подключение фильтра cgpav
- 4.2.4. Запрещение использования определенных типов файлов
- 4.2.5. Создание сертификатов для защищенного ssl-соединения
- 4.2.6. Защита от DoS атак
- 4.2.7. Порт Submission (587)
- 4.2.8. Pronto!
- 4.3. Локальные вспомогательные скрипты
- 4.4. Антиспамерские меры
- 4.5. LDAP
- 4.6. Firewall
- 4.7.
Почта к нам и от нас
- 4.7.1. Общие рекомендации
- 4.7.2. Стандартные e-mail адреса
- 4.7.3. SPF записи в DNS
- 4.7.4. Как посмотреть на какие домены шлют почту пользователи?
- 4.7.5. Как посмотреть куда ломятся вирусы и спамботы?
- 4.7.6. С каких серверов чаще всего письма приходят в СПАМ
- 4.7.7. Как проверить, какие MX не хотят принимать почту от нас
- 4.7.8. Проверка ip-адреса почтового сервера на наличие в RBL
- 4.7.9. Проверка сервера на Open Relay
- 4.8. Решение проблем
- 5. Коммуникации реального времени
- 6. ТЕСТИРОВАНИЕ
- 7. Отказоустойчивость
- 8. АДМИНИСТРИРОВАНИЕ
- 9. Ссылки по теме
- 10. Всякое
1. ЗАДАЧА
Создать полнофункциональную почтовую систему на 1000-1500 человек с защитой от вирусов, спама и нежелательного контента, с возможностью обучения фильтра пользователями.
Описываемая система работает на базе операционной системы SLES10 SP2 (ppc64) [1] в логическом разделе LPAR [2] на сервере IBM pSeries [3]. Используется 32х-битная ppc-сборка CommuniGate 5.3
2. ЛИЦЕНЗИРОВАНИЕ
Описание политики лицензирования CommuniGate Pro и сопутствующего ПО
3. УСТАНОВКА
Для начала следует удалить текущий почтовый пакет из системы. В SUSE это делается через YaST, удаляемый пакет: postfix
3.1. 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
3.1.1. 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
3.1.2. CLI.pm
Скачиваем perl-библиотеку CLI.pm [4] с сайта http://www.stalker.com/CGPerl/CLI.pm в директорию /usr/local/lib и делаем символическую ссылку в /usr/lib/perl5/{version}
Следует помнить, что при обновлении communigate следует вручную скачать новую версию библиотеки!
3.2. 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 ".../clamav-0.96.2-29.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
3.3. 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
3.4. Фильтр для совместной работы 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
3.5. Тестовый (лабораторный) вирус eicar
Описание находится по адресу: http://www.eicar.org/anti_virus_test_file.htm
Нам для работы необходим файл http://www.eicar.org/download/eicar.com Именно с его помощью мы в дальнейшем будем тестировать нашу почтовую систему.
4. НАСТРОЙКА
4.1. Модификация конфигурационных файлов
/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
4.2. CommuniGate
Все глобальные настройки осуществляются в административном веб-интерфейсе системы (http-порт 8010 или https-порт 9010 на почтовом сервере). Используется "экспертный" режим.
Настройки конкретных доменов, заведение и удаление пользователей производятся доменными администраторами из интерфейса управления домена: http://mail.example.com:8010/DomainAdmin/domain.name/
4.2.1. Изменение портов пользовательского web-интерфейса
По-умолчанию communigate предоставляет доступ к web-интерфейсу пользователя на портах 8100 и 9100. Изменим их на стандартные 80 и 443:
Установки -> Услуги -> HTTPU -> Приемник
Меняем 8100 на 80 и 9100 на 443
4.2.2. robots.txt / favicon.ico
Чтобы поисковые роботы не индексировали почтовую службу, создаем на локальной машине файл robots.txt [5] следущего содержания:
User-Agent: * Disallow: /
Помещаем его в CommuniGate:
Пользователи -> Интерфейсы -> Загрузить файл
Теперь на запросы поисковых роботов cgp будет отдавать /robots.txt во всех доменах.
favicon.ico можно при желании загрузить таким же образом.
4.2.3. Подключение фильтра cgpav
Установки -> Общее -> Помощники
В разделе Фильтрация Данных добавляем правило с именем cgpav и пишем в Путь к Программе: cgpav
Теперь необходимо перейти в раздел: Установки -> Почта -> Правила
Добавляем правило с приоритетом 4, называем его virus_scan и нажимаем Изменить. Собираем правило:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 1024
- Действие - Внешний фильтр
- Параметр - cgpav
Нажимаем Модифицировать
При желании можно исключить из проверки письма, приходящие из доверенных источников, к примеру с рабочих ПК предприятия, защищенных корпоративным антивирусом. В таком случае правило для подключения cgpav будет выглядеть следующим образом:
- Данные - Размер письма
- Операция - Больше чем
- Параметр - 1024
- Данные - Источник
- Операция - Не среди
- Параметр - trusted,authenticated
- Действие - Внешний фильтр
- Параметр - cgpav
4.2.4. Запрещение использования определенных типов файлов
Всвязи с трудоемкостью ручного добавления большого количества однотипных фильтров, была использована следующая схема: фильтры были сгенерированы 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
4.2.5. Создание сертификатов для защищенного ssl-соединения
По умолчанию Communigate использует тестовый метод ssl-авторизации. Для обеспечения нормальной работы ssl необходимо внести следующие правки: В административном интерфейсе Communigate выбираем следующую вкладку:
Пользователи -> Домены -> Домен -> Безопасность -> SSL/TLS
И в окне "Услуги PKI криптографии" меняем значение на "включено". Далее необходимо сгенерировать самоподписанный сертификат во внутреннем генераторе сертификатов.
Следует помнить, что имя-идентификатор сертификата должен соответствовать точному dns-имени сервера, на который заходят пользователи вашего домена.
4.2.6. Защита от DoS атак
Чтобы предотвратить появление ситуации типа "отказ в обслуживании", вызваные черезмерным количеством одновременно открытых tcp-сессий используются следующие параметры:
"Установки" -> "Почта" -> "SMTP" -> "Прием"
Устанавливаем параметр "Каналы" на значение 1000. Переходим по ссылке "Приемник" и устанавливаем параметры:
- Ограничение на соединения с одного Адреса -> 100
- Резерв соединений для Клиентов -> 300
4.2.7. Порт Submission (587)
Для клиентов, находящихся вне локальной сети предприятия, следуя RFC 2476 рекомендуется открыть порт 587 (Submission) [6] [7] на сервере и настроить почтовые клиенты на работу с SMTP с этим портом, вместо 25го, который все больше и больше провайдеров закрывают в своих сетях для борьбы со СПАМом.
Установки -> Почта -> SMTP -> Прием -> Приемник
- Добавляем порт 587
- Начальный SSL/TLS вкл.
4.2.8. 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;'
4.3. Локальные вспомогательные скрипты
Данные скрипты установлены в директории /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, удаляет письма старше одного дня.
- 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
4.4. Антиспамерские меры
4.4.1. CommuniGate
4.4.1.1. Задержка ответа сервера
Установки -> Почта -> SMTP -> Прием
В разделе ограничения: отложить ответ сервера на 7 сек.
Время задержки можно варьировать, однако мы не рекомендуем устанавливать задержку более, чем на 30 сек. несмотря на то, что по требованиям RFC задержка может составлять до 5 минут.
4.4.1.2. SPF проверка [8] [9]
Установки -> Почта -> SMTP -> Прием
Проверять SPF-записи: Включено
4.4.1.3. Ограничения
Установки -> Почта -> SMTP -> Прием
Отсоединить после: 15 ошибок и Заблокировать Доступ на: 60 мин.
4.4.1.4. Встречное соединение
Установки -> Почта -> 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
4.4.1.5. Блокировки RFC Reader
Идем: Установки -> Почта -> RFCReader
Ставим правила, отклоняющие письма с pipe:
From: *<*|*@*> From: *|* Return-Path: *<|*@*> Return-Path: *|*
4.4.1.6. Блокированные Сетевые Адреса
Установки -> Сеть -> Блокировки
; непонятный 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
4.4.1.7. Использование блокировок по 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 [10] (отсутствие PTR является нарушением Секции 1.2 RFC 1912 и Секции 3.6 RFC 2821)
4.4.1.8. Использование блокирующих DNS-Серверов (RBL)
В административном интерфейсе Communigate открываем следующую вкладку:
Установки -> Сеть -> Блокировки
Включаем "Использовать Блокирующие DNS-Сервера (RBL)" и записываем адреса днс в графы. Мы используем следующие адреса:
Устанавливаем значение "Блокировать" в разделе "Письма с Блокированных Адресов"
4.4.1.9. Неблокируемые Адреса (Белые Дыры)
; 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
4.4.1.10. Неблокируемые по 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
4.4.1.11. Использование механизма SpamTrap
Также к дополнению к предыдущим методам, можно использовать Spamtrap. Communigate Pro имеет встроенный механизм "ловушек для спама", который заключается в создании нескольких ящиков-переадресаторов на специальный служебный адрес "spamtrap". Письма, приходящие на этот ящик будут автоматически распознаваться как спам и удаляться из всех аккаунтов пользователей. Для эффективной работы этого механизма стоит размещать ссылку на этот адрес на тех же ресурсах, где находятся реально существующие ящики пользователей, чтобы спам-боты индексировали их одновременно.
При наличии пары-тройки лишних доменов можно указать пересылать почту для неизвестных на spamtrap'ы. Это позволяет эффективно блокировать спамеров, подбирающих почтовые ящики пользователей по словарям.
Посмотреть на какие spamtrap'ы приходит больше всего писем можно командой:
grep spamtrap /var/CommuniGate/SystemLogs/*.log | awk '{ print $11; }' | sort | uniq -c | sort -n -r | head
4.4.2. SpamAssassin
Набор правил для русскоязычного спама: http://sa-russian.narod.ru/
4.4.2.1. Первоначальный тюнинг
По совету из конфигурационного файла cgpav.cfg ставим следующий параметр:
score MIME_MISSING_BOUNDARY 0
Необходимость отключения данной проверки вызвана тем, что cgpav обрезает большие письма до 50K (по-умолчанию) перед передачей фильтру spamassassin, что приводит к ложному срабатыванию и, иногда, ложной классификацией писем со вложениями в качестве спам-сообщений.
Добавим больше доверия прошедшим spf-проверку
score SPF_PASS -2.0
4.4.2.2. 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
4.4.2.3. Исключения для рассылок и важных доменов
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
4.4.2.4. Правила для проверки результатов встречного соединения (reverse connect)
/etc/mail/spamassassin/local.cf
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
4.4.2.5. 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
4.4.2.6. Другие правила в local.cf
Полный список наших правил:
auto_whitelist_path /etc/mail/spamassassin/auto-wl/auto-whitelist
auto_whitelist_file_mode 0666
# 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
# Novell
whitelist_from_rcvd *@novell.com novell.com
# N-Link
whitelist_from_rcvd *@nlink.ru nlink.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 *@yandex.ru yandex.ru
whitelist_from_rcvd *@narod.ru yandex.ru
# Рамблер
whitelist_from_rcvd *@rambler.ru rambler.ru
# Гуголь
whitelist_from_rcvd *@gmail.com google.com
# Hotmail
whitelist_from_rcvd *@hotmail.com hotmail.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 *@forest.ru mail.forest.ru
whitelist_from_rcvd *@biodiversity.ru mail.biodiversity.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 *@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 *@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
# CommuniGate Pro "Pronto!" web-interface
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
# Яндекс 2
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
4.4.3. Кнопки спам/не спам в веб-интерфейсе 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@имя-домена";
4.5. LDAP
4.5.1. Аутентификация пользователей на прокси-сервере 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)
4.6. Firewall
На роутере (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
4.7. Почта к нам и от нас
4.7.1. Общие рекомендации
Чтобы почта с сервера доходила до адресатов в интернете:
- все ip-адреса почтовых релеев должны быть обязательно прописаны в обратной dns-зоне;
- "Greeting name" почтового сервера должен соответсвовать его dns-имени;
- необходимо читать сообщения, приходящие на abuse@, и своевременно на них реагировать;
- уменьшить время повторов посылки и увеличить количество попыток хотя бы для первого часа, это поможет уменьшить задержки до севреров, использующих greylisting. При времени повтора 1 час и выше почта рискует быть доставленной не за одни сутки;
В качестве рекомендуемой меры можно зарегистировать свою сеть (или конкретно почтовые сервера) в DNSWL и EmailReg.org
Однако следует понимать, что всегда в интернете найдется сервер который не захочет принимать почту от нас. Авторам в свое время попался американский почтовый сервер, возвращавший письма с объяснением вида "550 E-mail from Russia. Bye!"
4.7.2. Стандартные e-mail адреса
Для взаимодействия с сетью интернет серверу крайне желательно содержать определенное число стандартных адресов (RFC 2142)
В нашем случае используются адреса:
- abuse@ для жалоб
- webmaster@ для обратной связи с сайтов
- info@ по общим вопросам
- noc@ и support@ для связи с техперсоналом
- hostmaster@ для вопросов, связанных с DNS
4.7.3. SPF записи в DNS
Для домена:
example.com. IN TXT "v=spf1 mx ~all"
Для почтового сервера:
mail IN TXT "v=spf1 a -all"
Это поможет пользователям получать почту от нас
4.7.4. Как посмотреть на какие домены шлют почту пользователи?
Просто список доменов (для скриптов):
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
4.7.5. Как посмотреть куда ломятся вирусы и спамботы?
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
4.7.6. С каких серверов чаще всего письма приходят в СПАМ
Внимание! Команда неоптимизирована и выполняется достаточно долго. Другие варианты приветствуются на странице обсуждения статьи.
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
4.7.7. Как проверить, какие MX не хотят принимать почту от нас
grep "Expected 25x <id>, got:550" /var/CommuniGate/SystemLogs/* | awk -F "[(,)]" '{ print $2; }' | sort | uniq -c | sort -n -r
4.7.8. Проверка ip-адреса почтового сервера на наличие в RBL
В сети интернет существует большое число утилит для удобной проверки адресов на попадание в RBL. Можно воспользоваться как одним из on-line сервисов вроде OpenRBL так и скриптами, выполняемыи непосредственно на сервере, к примеру RBLLookup Version 1. Для работы программы необходимы prel-модули
- Net::DNS
- Term::ANSIColor
которые легко устанавливаются через CPAN.
Программа работает следующим образом, из командной строки указываем какой адрес проверить:
# ./rbl.pl 198.51.100.92
и ждем результата.
Так же существуют плагины для подключения к Nagios
4.7.9. Проверка сервера на Open Relay
Для проверки сервера на открытый релей можно пользоваться сайтом http://www.nettools.ru/
4.8. Решение проблем
4.8.1. Коды ошибок почтовых серверов
RFC 3463 регламентирует номер кодов ошибок, которыми почтовая система информирует отправителя о недоставке [15] письма получателю, к примеру:
- 5.1.1 (Unknown user),
- 5.2.2 (Mailbox full)
- 5.7.1 (Rejected by security policy/mail filter)
4.8.2. "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"
5. Коммуникации реального времени
Медиа плагин для браузеров Internet Explorer, Firefox, Chrome и Safari доступен по адресу: http://www.communigate.com/MediaPlugin/
5.1. Хитрости Маршрутизатора
Выделяем целый домен под 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
Входящие телефонные звонки
5.2. 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/
5.3. Входящие звонки
В Маршрутизаторе укажем, что входящий звонок с многоканального номера перенаправляем на 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:
5.4. QoS
5.4.1. 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
5.5. SIP/Jabber
DNS records are a common source of misconfiguration for SIP and XMPP.
Like e-mail and MX records, there is a special type of DNS record for SIP and XMPP routing and prioritization. This record is called the Service Record or "SRV" record.
Using DNS resolver tools such as "dig", "nslookup", or others, one can query these records to better understand SIP and XMPP routing. The syntax can be a little odd at first, as it uses both an application protocol (_sip) and IP protocol (_udp) component:
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.
For this example, note that the response contains (at least) three important pieces of information: 10 - the priority of the server as compared to possible other servers for the same record 5060 - the port to which to connect login.versature.com - the server hostname
Multiple records are also possible:
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.
For this example, the server "post.communigate.com" has a priority of "0" and is therefore *higher* priority than the server site.communigate.com. SIP UDP clients should attempt to connect to post.communigate.com first, then to site.communigate.com.
The following is an example of a full DNS entry for SIP and XMPP for a fictional "example.com" domain, using BIND syntax:
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.
5.5.1. IP-телефоны Linksys
Основная статья: Linksys
5.5.2. Софтофоны
Основная статья: IP-телефон_на_ПК_(Софтофон)
5.5.3. Софтофон веб-клиента Pronto!
TODO
6. ТЕСТИРОВАНИЕ
6.1. Способности SpamAssasin распознавать спам
spamassassin -t < sample-spam.txt > /tmp/sample-spam.txt spamassassin -t < sample-nonspam.txt > /tmp/sample-nonspam.txt
6.2. Работа 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"
7. Отказоустойчивость
В целях надежного прохождения почты и уменьшения перебоев, связанных с авариями на каналах связи, почтовый сервер подключен к двум независимым провайдерам и имеет 2 белых ip-адреса. В DNS внесены оба адреса в качестве mx-записей домена.
7.1. Насторойка ОС
Порядок действий для 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.
8. АДМИНИСТРИРОВАНИЕ
8.1. Приветственное письмо новым пользователям системы
Идем в Пользователи -> Домены -> (домен) -> Объекты -> Шаблон и по инструкции создаем шаблон письма для пользователей, чтобы они помнили о нашей заботе и опеке.
Следует помнить, что напрямую русские символы в заголовках письма использовать нельзя TODO
8.2. Смотрим, какие сервера используются RPOP
grep "RPOP-" /var/CommuniGate/SystemLogs/*.log | awk -F "[ ,(,)]" '{ print $4; }'|sort|uniq -c
8.3. Миграция пользователей со старой платформы
Старая почтовая система авторов построена на базе 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
Через некоторое время вся информация пользователей будет перенесена.
8.4. Модификация интерфейса Pronto!
Можно при необходимости заменить логотипы Communigate на свои собственные загрузив в папку со скином Pronto следующие файлы [16]:
- loginlogoimage.png
The main logo on the login page. Size: 350x117 pixels, background: transparent.
- loginimage.png
Login page "screenshot image". Size: 440x340 pixels, background: opaque.
- logosmallimage.png
The main screen logo in the top left corner. Size: 90x30 pixels, background: transparent.
- customlogosmall.png
Rotates with the CommuniGate Pro logo in the right bottom corner of the main screen. Size: 90x30 pixels, background: transparent.
- customlogomedium.png
Rotates with the CommuniGate Pro logo on the login page. Size: 145x50pixels, background: transparent.
8.5. Рутина
8.5.1. Управление аккаунтами
Управление аккаунтами пользователей осуществляется администраторами домена при помощи внешнего java-приложения. java-библиотека и описание функций работы представлены на сайте производителя по адресу: http://www.stalker.com/CGJava/
8.5.1.1. Вспомогательные 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;
8.5.2. Работа с пользователями
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
8.5.3. Настройка клиентских машин
9. Ссылки по теме
Communigate
- http://www.stalker.com/
- http://lang.communigate.com/ru/
- 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
- hhttp://forum.voxilla.com/communigate-pro-support-forum/
- http://www.osp.ru/text/print/302/4261.html
SIP/PBX
- http://www.e164.org/
- http://enum.org/
- http://enumquery.com/
- 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
Разное
- 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
RFC
10. Всякое
10.1. 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
10.2. Why am I seeing the following error concerning LDAP access after upgrading CommuniGate Pro to version 5.1.8 or later?
LDAP-XXXXXXX([XX.XX.XX.XX]) search failed. Error Code=insufficient directory access rights
By default the newer versions of CommuniGate Pro do not allow anonymous access to the Directory. Aside from the log entry in this question, you will most likely also see a log entry for this same transaction that shows an attempt to bind to the Directory as 'anyone', thus anonymous access. If you want to allow 'anyone' to browse the directory, you will need to modify the LDAP access rights within the CGP Admin interface. If you go to the Directory | Access rights section, you will most likely see a 'ReadAll' right. If you change the BindDN for this right from '*' to 'anyone', then anonymous directory access should work.
Security note: Anonymous access to the directory means that anyone can connect to your server and browse the contents of your Directory via LDAP. Please take this into consideration when configuring the settings above.
10.3. Automatic redirect from http to https
This can be done by modifying your login page (login.wssp) - Put this at the very beginning of the file:
< !--%%IF NOT(secureChannel)--><REDIRECT>https://yourdomain:9100< !--%%ELSE--> ... rest of login page < !--%%ENDIF-->
But you don't have to redirect and serve the login page through https. You can simply modify the Form action attribute for the login data to be sent through https (and the webmail session to continue in httpd mode). Just search for the <form> declaration in login.wssp and change its action, something like
<form action="https://yourdomain:9100" ... >
10.4. 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);
}
10.5. BIND NAPTR DNS Configuration for ENUM with Extensions
here's the content for the x.x.x.x.e164.arpa file
$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!".
replace SIPHOST with the FQDN of your server (for example sip.core.at) replace +43xxxxx with your enum-number (+43780801010)
with this config you've got extension 01 to 99 - if you need more then add one time [0-9] at the NAPTR-record.
- https://support.communigate.com/forum/showthread.php?t=16

Комментарии
Отправить комментарий