Принимаем первый внешний звонок на внутренний номер.

И так, телефон подключен к Asterisk, а Asterisk подключен к оператору связи, теперь как бы дозвониться нам до абонента 100, с внешнего мира? Нужен Dialplan. В данном случае, мы на прямую пробросим наш городской номер на телефонный аппарат.Переименуем дефолтный файл диалплана extensions.conf

 sudo mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

Создадим новый файл extensions.conf.

sudo nano /etc/asterisk/extensions.conf

Диалплан состоит из контекстов (это очень важно), кто знаком с программированием, то это сравнимо с процедурами. По умолчанию всегда имеются три контекста [general] [globals] и [default](не указывается явно).
Для решения наших целей нам нужен контекст default, добавим в него такие действия. Поступает звонок, АТС беред трубку, проигрывает звуковой файл, кладет трубку:

[general]

[globals]

[default]
exten => _X.,1,Verbose(1,Получен звонок с внешней линии)        ;передаем произвольный текст в детальный вывод
exten => _X.,n,Answer()                                         ;поднимаем трубку
exten => _X.,n,Playback(hello-world)                            ;проигрываем звуковой файл
exten => _X.,n,Hangup()                                         ;ложим трубку

Сохраняем, перезапустим диалплан и проверим.

sudo asterisk -rcvv
dialplan reload

_X. — это шаблон, он обозначает любой набор цифр. В место шаблона можно было бы указать внешний номер нашей организации, но будем более универсальны.

Проверили, послушали приветствие, убедились что звонки с внешних линий к нам проходят. Теперь усложним: будем сразу поступающие звонки перенаправлять на внутренний номер 100. Для этого воспользуемся приложением Dial. Данное приложение пытается соединить каналы. Правим наш диалпан, заменим строчку в которой идет проигрыш звукового сигнала, на Dial.

[general]

[globals]

[default]
exten => _X.,1,Verbose(1,Получен звонок с внешней линии)        ;передаем произвольный текст в детальный вывод
exten => _X.,n,Answer()                                         ;поднимаем трубку
exten => _X.,n,Dial(SIP/100)                                    ;переводим вызов на абонента 100
exten => _X.,n,Hangup()                                         ;ложим трубку

Сохраняем, перезапустим диалплан и проверим.

sudo asterisk -rcvv
dialplan reload

Если все правильно сделали, то должно заработать. Обращаю ваше внимание, что на исходящие звонки, с внутренних номеров на городские, наша АТС еще не настроена.

Подключение Asterisk к оператору связи

Сегодня будем пробовать подключаться к оператору связи через SIP протокол.
Так как это SIP протокол, то нам придется редактировать файл sip.conf

 sudo nano /etc/asterisk/sip.conf

Для подключения будем использовать выражение register, «данное выражение используется для регистрации вашего Asterisk на удаленном сервере».
У нас есть логин- телефон, пароль и адрес сервера для регистрации, попробуем зарегистрироваться. Делаем это в разделе [general]

[general]
register=88009999999:p@$$w0RD@sip01.serveroperator.ru

После занесения данных, сохраняем файл и пере запускаем конфигурацию sip протокола asterisk.

sudo asterisk -rcvv
sip show peers

Если не было ошибок проверяем регистрацию

Asterisk*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
sip01.serveroperator.ru:5060            N      88009999999        105 Registered           Mon, 13 Apr 2015 08:23:35
1 SIP registrations.

Все ОК, мы зарегистрировались на другом сервере, в данном случае на сервере оператора.

Подключение телефонного аппарата к Asterisk

Описание находится в книге Asterisk будущее телефонии Глава 4. Конфигурация SIP-телефона.

Будем рассматривать на примере Yealink-T22.
Переименуем наш файл конфигурации sip.conf в sip.conf.backup

sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup

Создадим новый файл конфигурации sip.conf

sudo nano /etc/asterisk/sip.conf

И в несем в него минимальные конфигурационные данные для работы с SIP телефоном:

[100]                   ;аккаунт регистрации, считай его ID и номер телефона
type=friend             ;указываем что устройство может принимать и совершать вызовы
host=dynamic            ;указываем что IP адрес у телефона динамический т.е. по DHCP
context=phones          ;"контекст" в котором данный номер работает.

Далее заходим на сам телефонный аппарат по его IP адресу. И в разделе Аккаунт выставляем адрес сервера телефонии, и аккаунт (номер) телефона в Asterisk:
090420151620
Жмем сохранить и переходим дальше к нашему серверу.
Т.к. sip.conf файл уже настроен его нужно применить. Для этого входим в консоль управления Asterisk

sudo asterisk -rcvv

И перезапускам файл sip.conf

sip reload

Если все прошло без ошибок, то можно проверить статус подключения.

Asterisk*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status                                                                                                                               Description
100/100                   192.168.120.10                           D  Auto (No)  No             5062     Unmonitored                                                                                                                        
1 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 0 offline]

В данном случае все ОК и телефон зарегистрировался.

Поговорим о безопасности.
Т.к. наш телефон могут взломать и воспользоваться международными и междугородными звонками за наш счет, обезопасим себя, установим сложные пароли на вэб вход телефона (сами разберитесь где это). И защитим немного сам сервере Asterisk. Открываем sip.conf

sudo nano /etc/asterisk/sip.conf

В разделе [general].Сменим порт на который хотим принимать SIP соединения.

bindport=6743

Запрещаем отправку детального ответа «на отказ в соединении»

alwaysauthreject=yes

В дискрипшене аппарата ограничиваем диапазон сетей с которых ожидать подключение.

deny=0.0.0.0/0.0.0.0
permit=192.168.120.0/24

Устанавливаем пароль для аутентификации

secret=p@$$W0rd

В итоге получаем такой конфиг:

[general]
bindport=4563           ;порт на который желаем принимать SIP соединение
alwaysauthreject=yes    ;не выдаем детального сообщения причины почему нет подключения.

[100]                   ;аккаунт регистрации, считай его ID и номер телефона
type=friend             ;указываем что устройство может принимать и совершать вызовы
host=dynamic            ;указываем что IP адрес у телефона динамический т.е. по DHCP
context=phones          ;"контекст" в котором данный номер работает.
secret=p@$$W0rd         ;пароль для аутентификации аппарата на сервере
deny=0.0.0.0/0.0.0.0    ;запрещаем подключение со всех IP адресов
permit=192.168.120.0/24 ;разрешаем подключение с определенного диапазона IP адресов

Это не полный перечень как обезопасить себя, статья на эту тему.

Установка Asterisk

Годная статья , автор молодец, по этому запостю ее к себе с маленькими обновлениями.

Установку Asterisk 12 будем проводить на ОС Ubuntu 14.04.01 server x86_64, установленную на Oracle VM VirtualBox.

Заходим в терминал Ubuntu и обновим системные пакеты.

sudo apt-get update
sudo apt-get upgrade

Перезагрузим систему

sudo reboot

Синхронизируем время, для этого установим сервер NTP

sudo apt-get install ntp

Установим зависимости, которые будут необходимы для корректной работы Asterisk

sudo apt-get install build-essential linux-headers-`uname -r` openssh-server mysql-server mysql-client libgnutls28 bison flex curl sox libncurses5-dev libssl-dev libmysqld-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool git g++ subversion uuid-dev vim-nox php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd

В процессе установки нужно будет ввести пароль для root пользователя MYSQL
080420151126
Перезагружаем систему

sudo reboot

Создадим папку, куда будем скачивать дистрибутивы Asterisk, DAHDI и LibPRI

sudo mkdir -p /usr/src/asterisk-12
cd /usr/src/asterisk-12

Скачиваем исходники Asterisk 12.8.1 (на момент написания инструкции последняя актуальная версия), DAHDI (пакет, ранее называвшийся zaptel, который осуществляет обработку аналоговых и цифровых интерфейсов), libPRI (библиотека, предназначенная для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface))

sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-12.8.1.tar.gz
sudo wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.1+2.10.1.tar.gz
sudo wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.15.tar.gz

Распаковываем скаченные исходники

sudo tar xvfz dahdi-linux-complete-2.10.1+2.10.1.tar.gz
sudo tar xvfz libpri-1.4.15.tar.gz
sudo tar xvfz asterisk-12.8.1.tar.gz

Для начала компилируем DAHDI

cd /usr/src/asterisk-12/dahdi-linux-complete-2.10.1+2.10.1
sudo make all
sudo make install
sudo make config

Далее компилируем LibPRI

cd /usr/src/asterisk-12/libpri-1.4.15/
sudo make
sudo make install

Начнем установку Asterisk 12. Необходимые модули устанавливаем командой make menuselect.

cd /usr/src/asterisk-12/asterisk-12.8.1/
sudo ./configure

При установке может вылететь ошибка

configure: error: *** JSON support not found (this typically means the libjansson development package is missing)

Для этого делаем следующее

cd /usr/src/
sudo wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz
sudo tar xvfz jansson-2.7.tar.gz
cd jansson-2.7/
sudo ./configure --prefix=/usr/
sudo make clean
sudo make
sudo make install
sudo ldconfig

Далее запускаем еще раз установку Asterisk

cd /usr/src/asterisk-12/asterisk-12.8.1/
sudo ./configure
sudo make menuselect

080420151455
По большей части, все необходимые модули уже включены. Вы можете что-то добавить или удалить. При выборе модуля у него будет короткое описание, за что он отвечает.

В разделе Add-ons выбираем модули format_mp3(понадобиться чтобы делать голосовое меню не в gsm формате, а в mp3) и все опции относящиеся к MySQL. Они понадобятся в случае подключения FreePBX.
Не забудьте загрузите модуль meetme.
Во вкладке Core Sound Packages – выберите необходимые форматы звуковых пакетов.
080420151502
В Music On Hold File Packages включаем все модули.
В Extras Sound Packages включаем первые 4 модуля содержащие EN
После настройки нажмите F12 для сохранения данных и выхода в окно консоли.
Далее вводим команду:

sudo make

Во время выполнения функции make у меня вылезла ошибка.

**************************************************************
***                                                        ***
***   --->  READ THIS OR YOUR BUILD WILL FAIL  <---        ***
***                                                        ***
*** format_mp3 has been selected to be installed, but the  ***
*** mp3 decoder library has not yet been downloaded into   ***
*** the source tree.  To do so, please run the following   ***
*** command:                                               ***
***                                                        ***
***          $ contrib/scripts/get_mp3_source.sh           ***
***                                                        ***
**************************************************************

   [CC] app_mysql.c -> app_mysql.o
   [LD] app_mysql.o -> app_mysql.so
   [CC] cdr_mysql.c -> cdr_mysql.o
   [LD] cdr_mysql.o -> cdr_mysql.so
   [CC] format_mp3.c -> format_mp3.o
format_mp3.c:39:24: fatal error: mp3/mpg123.h: Нет такого файла или каталога
 #include "mp3/mpg123.h"
                        ^
compilation terminated.
make[1]: *** [format_mp3.o] Ошибка 1
make: *** [addons] Ошибка 2

Для её устранения, вводим требуемую команду.

sudo contrib/scripts/get_mp3_source.sh

Запускаем опять команду make

sudo make

Далее вводим команды

sudo make install
sudo make samples
sudo make config

Перезагружаем сервер

sudo reboot

Проверяем работоспособность Asterisk. Вводим команду

sudo rasterisk

Далее автор предлагает обезопасить систему путем ввода и передачи брозд правления новому пользователю. Я этого не делал, но все же приведу цитату.
Если необходимо обезопасить систему, можем задать пользователя для управления Asterisk. Создаем пользователя, его каталог и пароль. Далее даем ему права для работы с Asterisk.

sudo adduser asterisk
sudo mkdir /home/username
sudo passwd username
sudo chown -R asterisk. /var/run/asterisk
sudo chown -R asterisk. /etc/asterisk
sudo chown -R asterisk. /var/{lib,log,spool}/asterisk
sudo chown -R asterisk. /usr/lib/asterisk

Перезагружаем сервер

sudo reboot

Заходим под пользователем asterisk

su asterisk

Проверяем работоспособность Asterisk. Вводим команду

rasterisk

И попадаем в консоль управления Asterisk.
Сделаем некоторую настройку для MySQL. Заходим в MySQL.

mysql -uusername -ppassword -hlocalhost

Здесь сокращения:
-h host
-u user
-p password
Пробел после них отсутствует
Или mysql –u username -p
После ввода пароля мы окажемся в консоле mysql. Создадим пользователя asterisk с localhost и паролем ‘password’.

create user 'asterisk'@'localhost' identified by 'password';

Пользователь создан. Для проверки посмотрим список пользователей:

select user,host,password from mysql.user;

Создадим базу данных asteriskcdrdb, asterisk.

create database asterisk;
create database asteriskcdrdb;

Далее определяем владельца базы данных

GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'password';
flush privileges;

Подключение Grandstream к Asterisk

В данной статье пойдет речь о модели Grandstream GXW4024.
Недавно начал изучать Asterisk. Думал с самого так сказать начала описывать процесс изучения данной программной АТС, но почитав книгу «Asterisk: будущее телефонии«, пришел к выводу что в этой книге выдана исчерпывающая информация для новичка по данной теме.

И так, требуется подключить Grandstream к Asterisk. Что ж, заходим на данное оборудование по его IP, вводим пароль, для тех кто не в курсе — по дефолту пароль admin. Переходим на вкладку Profile1, забиваем IP адрес нашего SIP сервера.
050320151022
Больше нас тут ни чего не интересует.
Теперь требуется настроть FXS порты. Переходим во вкладку FXS ports. Задаем на интересующей нас линии ID абонента и его пароль, выставляем Profile1 (мы же его настраивали).
050320151029

Теперь переходим к настройке Asterisk. Открываем на редактирование файл Sip.conf и добавляем следующие строки.

[4024]
host=dynamic
dtmfmode=rfc2833
secret=password
type=friend
disallow=all
allow=gsm                      
allow=ulaw
qualify=yes
context=phones
insecure=port

Сохраняем файл.
Пере запускаем в Asterisk конфигурацию SIP

root@AsteriskSrv:/etc/asterisk# asterisk -rcvv
AsteriskSrv*CLI> sip reload
 Reloading SIP

Если ошибок не выдало, то все ок. А вот как позвонить на данный телефон это уже другой вопрос)

Outlook добавляет письма в нежелательную.

Бывают ситуации что желательная почта по желанию outlook попадает в нежелательную. Данное решение предлагается для обладателям Exchange.

Предположим ситуацию что письмо от адресата petrov@example.com попадает в папку «нежелательная почта» пользователя sidorov, исправляем:

Get-mailbox -Identity "sidorov" | Set-MailboxJunkEmailConfiguration -TrustedSendersAndDomains @{Add="petrov@example.com"}

А если нам надо разрешить прохождения писем от целого домена example.com

Get-mailbox -Identity "sidorov" | Set-MailboxJunkEmailConfiguration -TrustedSendersAndDomains @{Add="example.com"}

Так же есть и внутренний доменные адреса которые к верхними правилам не могут применяться, по этому тут нужно идти по другому пути:

Set-ContentFilterConfig  -BypassedSenderDomains @{Add="blueyonderairlines.com"}

Проверка

Get-ContentFilterConfig | Format-List Bypassed*

Ссылки по теме.

https://technet.microsoft.com/ru-ru/library/aa995953(v=exchg.150).aspx

https://technet.microsoft.com/ru-RU/library/dd979780(v=exchg.150).aspx

Низкая скорость на сетевом инетрфейсе виртуальной машины

Доброго дня всем.
Второй раз уже натыкаюсь на данную проблему, а следовательно это уже закономерность. Данная проблема возникает на серверах HP Proliant. Опишу её. После установки Hyper-V R2 Core и запуска на нем виртуальных машин, через некоторое время начинается падение скорости на сетевых интерфейсах виртуальных машин. Причем скорость передачи данных между гипервизором и локальным хостом в сети — нормальная. А если осуществлять сетевой обмен между хостом в сети и виртуальной машиной то скорость не привышает 1мб/с. В чем же спросите вы проблема? А она заключается как всегда в «хотели сделать как лучше» — Microsoft в своем новом продукте внедрили технологию VMQ, призванную разгрузить Hyper-V, но увы наверное не все сетевые интерфейсы поддерживают данную технологию (на CISCO с210 сервере я данную проблему не словил).
Решение. Для начала проверил включен ли данный режим на наших сетевых интерфейсах с помощью команды Get-NetAdapterVMQ :

PS C:\Users\Administrator> Get-NetAdapterVMQ

Name                           InterfaceDescription              Enabled BaseVm
                                                                         qProce
                                                                         ssor
----                           --------------------              ------- ------
user_net                       Microsoft Network Adapter Mult... True    0:0
Ethernet 5                     Broadcom NetXtreme Gigabit E...#4 False   0:0
Ethernet 2                     Broadcom NetXtreme Gigabit Eth... False   0:0
Ethernet 3                     Broadcom NetXtreme Gigabit E...#2 True    0:0
Ethernet 4                     Broadcom NetXtreme Gigabit E...#3 True    0:0

Как видим данный режим на интересующем нам интерфейсе user_net включен.
Отключим его на всех интерфейсах:

Get-NetAdapter|Disable-NetAdapterVMQ

Возможно даже система будет ругаться что мол не могу и все такое. Но в итоге должно все отработать ровно.
Проверяем:

PS C:\Users\Administrator> Get-NetAdapterVMQ

Name                           InterfaceDescription              Enabled BaseVm
                                                                         qProce
                                                                         ssor
----                           --------------------              ------- ------
user_net                       Microsoft Network Adapter Mult... False   0:0
Ethernet 5                     Broadcom NetXtreme Gigabit E...#4 False   0:0
Ethernet 2                     Broadcom NetXtreme Gigabit Eth... False   0:0
Ethernet 3                     Broadcom NetXtreme Gigabit E...#2 False   0:0
Ethernet 4                     Broadcom NetXtreme Gigabit E...#3 False   0:0

Как видим теперь на всех интерфейсах режим VMQ отключен.
Теперь можно проверить и скорость передачи данных по сети у виртуальных машин. У меня стало все ОК работать, а у вас?

Delphi. Получение PID дочернего процесса.

Пишем на Delphi.
Потребовалось найти PPID. Т.е. PID потомка процесса порождающего его.

//******************************************************************************
//функция получает ПИД дочернего процесса , передается ПИД процесса родителя
//******************************************************************************
function Get_PIDchild_process(PIDparent:Cardinal):Cardinal;
var
  HandleSnapShot      : THandle;
  EntryParentProc     : TProcessEntry32;
  fnd: boolean;
begin
result := 0;    //если процесс не существует
HandleSnapShot     := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//делаем снапшот процессов или чего там (короче диспетчера задач)
EntryParentProc.dwSize := SizeOf(EntryParentProc);     //я так понимаю создаем структуру , этакий шаблон , для получения данных
fnd := Process32First(HandleSnapShot, EntryParentProc); // Находим первый процесс. передавая снапшота в структуру данных
while fnd do // Цыкл перебора всех процессов в системе (снапшоте).
  begin
  if (EntryParentProc.th32ParentProcessID = PIDparent) then   //если найден процеесс у которого родитель его то
    begin
    fnd := false; //заканчиваем цыкл
    result := EntryParentProc.th32ProcessID;  //возвращааем PID процесса потомка
    ShowMessage(inttostr(PIDparent)+'   '+inttostr(EntryParentProc.th32ProcessID)+'   '+EntryParentProc.szExeFile);
    end;
  fnd := Process32Next(HandleSnapShot, EntryParentProc);  // Схожий процесс не найден, продолжаем перебор
  end;
CloseHandle(HandleSnapShot);  // Закрываем наш снепшот.
end;

Прокомментирую, в кратце.
Делаем «снапшот» всех процессов в системе. Создаем структур (массив) — в которую будем передавать снапшот, а дальше просто цыклом перебираем. И тем самым находим по PID родителя PID потока.

postfix + DKIM + SPF + DMARC

Доброго дня.
Сервер, а точнее IP сервера попал в бан google. И надо что-то предпринимать, т.к. потдержка корпорации добра не стримится помоч тем кто им не платит, пробуем решить данную проблему своими силами. И одно из таких решений это подтверждение кашерности письма по средсвам DKIM.
Этот пост я честно списал с других ресурсов, чисто для себя, чтобы не искать в следующий раз и не вспоминать что да как было.
Оригинал взят с этих статей: статья 1, статья 2.

И так начнем устанавливаем OpenDKIM

aptitude install opendkim opendkim-tools

Создадим дирректорю для наших будущих ключей

mkdir /etc/postfix/dkim/

Теперь надо генерировать ключи «открытый» и «закрытый».

opendkim-genkey -D /etc/postfix/dkim/ -d example.com -s example

вот тут один момент, в описании говорится что -d -это домен, а -s — селектор. Селектор — это приставка что ли, по которой будет потом искаться ключ в DNS, потом покажу.
И так создались два файла example.private и example.txt.
Сразу возьмем и добавим из файла example.txt хэш код на сервер DNS — обращаю ваше внимание что нам нужно только та информация, которая включена в двойные кавычки (кавычки не копируем).
И в этом же файле наблюдаем такую запись example._domainkey — вот это и есть селектор (без ._domainkey), это буде TXT запись на нашем DNS сервере. Примерно должно получиться следующая запись в DNS
281020141236
Файлам ключей обязательно нужно дать доступ для группы, в которой работает OpenDKIM:

chgrp opendkim /etc/postfix/dkim/*
chmod g+r /etc/postfix/dkim/*

В файл конфигурации /etc/opendkim.conf записываем:

Syslog yes
SyslogSuccess yes
# на время отладки включим расширенное логгирование
LogWhy yes
X-Header yes

Canonicalization relaxed/relaxed
# подпись и проверка подписей
Mode sv
# если только подписываем
#Mode s

# список ключей -
KeyTable file:/etc/postfix/dkim/keytable
# соответствие адресов/доменов и ключей -
SigningTable file:/etc/postfix/dkim/signingtable
# если вы подписываете и на других серверах -
#ExternalIgnoreList file:/etc/postfix/dkim/trusted
# список внутренних хостов, почта которых требует подписи -
#InternalHosts file:/etc/postfix/dkim/internal

Список имеющихся ключей укажем в файле /etc/postfix/dkim/keytable:

# формат: "название домен:селектор:/путь/до/ключа"
# в качестве названия удобно использовать имя DNS записи с ключем
mail.example.com example.com:example:/etc/postfix/dkim/example.private
# ключей может быть сколько угодно
#mx._domainkey.example.net example.net:mx:/etc/postfix/dkim/mx.private
# (список ключей может быть и в БД - продробней в манах)

Объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/postfix/dkim/signingtable:

# формат: "домен-или-адрес название-ключа"
example.com mail.example.com
#example.net mx._domainkey.example.net
# все остальные адреса тоже подписываем
#* mail.example.com
# (подробное описание формат есть в man)

В других файлах, указаных в директивах ExternalIgnoreList и InternalHosts, содержится просто список хостов и/или IP-адресов каждый на новой строке.

В файле /etc/default/opendkim объясним DKIM-демону где ему ждать подключений:

SOCKET="inet:8891@localhost"

Наконец, добавим в конец /etc/postfix/main.cf следующие строки:

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Я добавил еще вот такую запись в DNS

_domainkey.example.com.    TXT     "t=s; o=~;"

Перезапускаем postfix

service postfix restart

Перезапускаем opendkim

service opendkim restart

Проверить отрабатывает или нет ваш DKIM (там же и SPF) можно отослав тестовое письмо на адрес check-auth@verifier.port25.com в ответ придет письмо с развернутым ответом что да как 🙂

Теперь поговорим об SPF
Настраивается еще проще чем DKIM. Нужно просто в DNS добавить запись типа TXT/SPF

v=spf1 ip4:151.236.219.215 ip6:2a01:7e00::f03c:91ff:feae:4fa1 a ~all

где указывается IP вашего домена. Причем запись вешается прям на сам домен.
Немного про SPF

Ну и последнее — DMARC
Немного о DMARC.
Говорят их очень любит Google, что же не будем его обижать, добавим запись вида

_dmarc.example.ru   3600    IN  TXT "v=DMARC1; p=none; rua=mailto: postm@example.ru "

что означает все письма которые не прошли проверку отправлять на такой то адрес.

Перенос wss (SharePoint) с 2003 server sp2 (SBS) на 2008 r2

Доброго дня.
Сегодня попробую рассказать как перенести портал sharePoint c 2003 го сервера на 2008-ой.
И так приступим. Сначала бэкапим старый портал. Для этого зайдем в Центр администрирования Перейдем в Операции -> Выполнение резервного копирования.
251020141132
Далее Шаг 1, выбираем ВСЕ. и продолжаем нажатием на Параметры резервного копирования.
251020141137
Шаг 2. Тут следует выбрать Ферма и тип резервного копирования полное. Немного на счет местоположения, я пробовал сохранять на расшареную папку, с полными правами, но все равно получал ошибки, поэтому я решил использовать доп. винчестер и делать бэкап на него.
251020141142
После окончания резервного копирования, состояние отчета о ходе выполнения должно выглядеть как на изображении , без ошибок 🙂
251020141149

И так у нас есть копия портала. Теперь следует подготовить новый сервер для данного обновления.
Для начал добавляем сервер в домен. (у меня домен поэтому и добавляю)
— имя сервера WSS
Далее требуется установить SQL Server 2008 r2 standart
— название экземпляра я поставил тоже WSS
— Режим проверки подлинности смешанный
— Настройка служб Reporting Service: Установить конфигурацию по умолчанию для работы в SharePoint

После установки SQL сервера требуется поставить еще одно обновление, WSS 3.0 — данный дистрибутив можно скачать с сайта Майкрософт.
Установка WSS 3.0:
— выбираем тип установки Расширенная
— Далее выбираем Веб-интерфейс
После запускаем мастер настройки WSS 3.0.
— Нет, создать новую ферму SharePoint
— Вводим параметры нашей новой фермы. WSS\WSS — имя сервера и имя экземпляра (я писал выше). Имя базы WSS — ну просто так решил назвать. Учетные данные, тут данные либо доменного администратора, либо локального администратора БД.
251020141253
Номер порта можно указать, а можно не указывать (я указываю).
Проверка подлинности NTML
Ждем когда завершиться процесс создания БД.

По завершению система нам откроет узел центра администрирования созданного портала.
Т.к. у меня плохо получается дружба с расшареными папками для бэкапирования и восстановления, я скопирую папку с копией портала на новый сервер.
Советую отключить у IE Конфигурацию усиленной безопасности — открываем диспетчер сервера -> выбираем «корень» диспетчер сервера -> справа внизу выбираем пункт Настроить конфигурацию усиленной безопасности Inteernet Explorer.

И так мы в центре администрирования SharePoint, переходим в операции , далее восстановление из резервной копии.
Указываем местоположение резервной копии
251020141328
Выбираем нужную нам копию, и жмем Продолжить востановление
251020141330
Так же выбираем ВСЕ пункты компонент восстановления. И жмем продолжить восстановление.
251020141333
Следующий шаг довольно сложный.
— Новая конфигурация
— Указываем URL-адрес нового веб-приложения желательно с портом
— Имя нового сервера баз данных WSS\WSS
— Имя нового каталога, надо чтобы каталог существовал.
— Имя новой базы данных можно не изменять (но лучше изменить)
251020141431
Если будут возникать ошибки во время восстановления, то придется довольно часто прерывать операцию Операции -> Операции задания таймера -> Резервное копирование или восстановление -> Удалить

После восстановления можно проверить зайдя по адресу и порту у меня это http://wss:8033/
Если работает, то было бы не плохо сменить порт на 80ый. Для этого надо зайти в диспетчер IIS. Сайты -> WSS -> Действия/Привязки и изменяем на 80 порт. Так же было бы не плохо сменить порт для дефолтного сайта IIS, на какой нибудь другой.

Все, мы рассмотрели перенос SharePoint с windows server 2003 на server 2008 r2/