Postfix – запрет приема почты от адресата или домена

В /etc/postfix/main.cf добавляем

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access

В /etc/postfix/sender_access

# Заблокировать всю почту с домена и поддоменов 
domain.com REJECT 
# Заблокировать пользователя spam с любого домена 
spam@ REJECT 
# Заблокировать адрес
spam@domain.com REJECT NO SPAM

Далее, обязательно

postmap /etc/postfix/sender_access
service postfix reload
image_pdfimage_print

Postfix – копии всей входящей и исходящей почты

Для того, что бы сохранить копии всех исходящих писем необходимо в /etc/postfix/main.cf добавляем

sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps

А в /etc/postfix/sender_bcc_maps

#Вся почта исходящая из домена eddnet.org на info@eddnet.org
@eddnet.org sender_bcc@eddnet.org

Для того, что бы сохранить копии всех входящих писем нужно в /etc/postfix/main.cf добавить

recipient_bcc_maps = hash:$config_directory/recipient_bcc_maps

В /etc/postfix/recipient_bcc_maps

# Вся входящая почта для домена eddnet.org пересылать на info@eddnet.org
@eddnet.org info@eddnet.org

Если вы хотите что бы и входящие и исходящие копии писем пересылались на определенный адрес, то вам необходимо добавить в /etc/postfix/main.cf

always_bcc = all@sys-adm.org.ua

Обязательно в конце

postmap /etc/postfix/sender_bcc_maps
postmap /etc/postfix/recipient_bcc_maps
service postfix restart
image_pdfimage_print

Squid – delay pools

В прокси сервере Squid есть возможность ограничивать скорость, делается это при помощи Delay pools. В версии 2.X этих пулов три класса, а в 3.X добавили еще два новых и их стало пять. Но для начала давайте рассмотрим основные параметры.

И так delay_pools это параметр который задает общее количество наших пулов, то есть если вы собираетесь использовать например три пула, то соответственно вы должны в самом начале написать

delay_pools 3

Далее идет delay_class. Этим параметром мы задаем номер пула и его класс, например мы хотим описать второй пул, который у нас принадлежит к третьему классу:

delay_class 2 3

Необходимо так же задать на какой лист доступа будет распространяться данный пул при помощи delay_access:

delay_access 1 allow users

где users задется при помощи acl, а «1» это номер нашего пула.

И последний параметр, это delay_parameters, в котором мы описываем ограничение:

delay_parameters 1 64000/128000

означает, что мы хотим ограничить наших пользователей первого пула скоростью в 512 кбит = 64 кбайта = 64000 байт, при этом первые 128 кбайт каждого запроса будут скачаны на максимальной скорости, затем, скорость будет ограничена до 512 кбит. Для того что бы убрать ограничение используйте значение -1, пример:

delay_parameters 1 -1/-1

означает, что для пула номер один нет никаких ограничений.

Итак, давайте перейдем к классам

Class 1 -ограничивает общую скорость для всех хостов входящих в определенную группу.

Пример:

delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 64000/128000

тоесть, пул номер один, первого класса, для сети описанной в листе доступа all, ограничивает скорость до 512 кбит/с, при этом первые 128 кбайт будут скачиваться на максимальной скорости, это ограничение общее и действует на всех, у пользователей никаких ограничений нет.

Class 2 — Ограничена общая скорость загрузки и скорость загрузки индивидуального хоста(IPv4 class C)

acl users src 192.168.0.1/24
delay_pools 1
delay_class 1 2
delay_access 1 allow users
delay_parameters 1 -1/-1 64000/128000

Пул номер один, второго класса, для сети описанной в листе доступа users.

-1/-1 означает что для сети 192.168.0.1/24 в целом нет ограничений, но есть ограничение 64000/128000 для каждого пользователя.

Class 3 — Ограничена общая скорость загрузки, скорость загрузки подсети и скорость загрузки индивидуального хоста (IPv4 class B).

acl users src 192.168.0.1/23
acl office src 172.16.0.1/24
acl bad_office src 172.16.0.15/32
delay_pools 1
delay_class 1 3
delay_access 1 allow users office !bad_office
delay_parameters 1 -1/-1 64000/128000 4000/1000

Пул номер один, третьего класса, для сетей описанных в листе доступа users и office. -1/-1 означает что общая скорость не ограничена, для сетей описанных в листах доступа users и office она ограничена 64000/128000 и каждый IP в данных сетях ограничен 4000/1000. При этом на IP адресс из листа доступа bad_office это правило не распространяеться, так как в параметре delay_access перед ним стоит восклецательный знак

Class 4 — Все то же самое что в Class 3, плюс ограничение для каждого пользователя. Данный пул будет работать только если у вас включен хоть какой-то способ аутентификации (IPv4 class B).

acl users src 192.168.0.1/23
acl auth  proxy_auth  user1 user2 user3
delay_pools 1
delay_class 1 4
delay_access 1 allow users office !bad_office
delay_parameters 1 -1/-1-1/-1 32000/32000 16000/16000

И так, пул номер 1, четвертого класса, для сети 192.168.0.1/23 и пользователей описанных в листе доступа auth. Общего ограничения и на сеть нету, но есть ограничение на IP — 32000/32000 и для пользователей из листа auth 16000/16000. Например если пользователь будет залогинен сразу на нескольких компьютерах, то на всех этих компьютерах его сумарная скорость не привысит 16000/16000, при этом все остальные пользователи из сети 192.168.0.1/23 будут ограничены 32000/32000.

Небольшой пример. Пускай у нас есть офис, в нем есть три пользователя (user1, user2, user3) для которых должно быть ограничение 128 кбит/с, так же один человек (user4) для которого должно быть ограничение 256 кбит/с и босс (boss1), на которого не должно быть ограничения.

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

acl user_normal proxy_auth  user1 user2 user3
acl user_speed proxy_auth  user4 
acl boss proxy_auth  boss1
delay_pools 2
delay_class 1 4
delay_class 2 4
delay_access 1 allow user_normal
delay_access 1 deny all
delay_access 2 allow user_speed
delay_access 2 deny all
delay_parameters 1 -1/-1-1/-1 -1/-1 16000/16000
delay_parameters 2 -1/-1-1/-1 -1/-1 32000/32000

Class 5 — Ограничивает скорость для запросов сгрупированных по их тегу, работает на external_acl’s с тагом reply.

И еще один параметр, это delay_initial_bucket_level. С первого взгляда он не совсем понятен, но все очень просто, когда пользователь обращается первый раз к сквиду, после перезапуска или реконфигурации, то сквид проверяет в delay pools этого пользователя, и помещает его в определенную группу(воронку) ограничения, например 16000/16000, так вот, параметр delay_initial_bucket_level отвечает за первичную заполненность этих групп. Если вы не изменяете этот параметр, то изначально он равен 50%. Как пример, если поставить значение 100%, то все возможные клиенты из листа доступа к которому применим наш delay pool будут внесены во все группы, это ускорит их первый запрос к серверу, но при этом сервер должен хранить всю, возможно лишнюю, информацию в памяти, это может быть лишним расточительством ресурсов. 50% достаточно оптимальное значений.

Что бы пользоваться delay pools, необходимо скомпелировать Squid с параметром —enable-delay-pools.

image_pdfimage_print

Создание загрузочной флешки из системы Windows

Если у вас новые компьютеры с UEFI, то нужно скачивать программу Rufus. Если у вас более старое железо, то достаточно будет программы UNetbootin. Рассмотрим нюансы работы с каждой из программ.

Подключите флешку к компьютеру, удалите с нее всю информацию и запустите программу Rufus. Перед вами появится вот такое окно:

Создание загрузочной флешки в Rufus

Сначала укажите путь к iso образу на вашем жестком диске, а затем выберите схему раздела “GPT для компьютеров с UEFI”. Остальные настройки программы можно оставить по умолчанию и нажать на кнопку “старт”. Дождитесь окночания записи образа на флешку и закройте окно программы.

Создание агрузочной флешки с Linux Mint с помощью UNetbootin

Программа UNetbootin существует как для системы Windows, так и для Linux Mint. Подключите флешку к компьютеру, удалите с нее всю информацию и запустите программу. Перед вами появится вот такое окно:

Создание загрузочной флешки в UNetbootin

Укажите путь к образу Линукс Минт на вашем компьютере и выберите носитель, на который данный образ будет записан. Нажмите на кнопку “ок” и дождитесь окончания записи.

image_pdfimage_print

Очистить файл от комментариев

Возьмем для примера файл настроек squid.conf, очистим его, предварительно сделав копию

cp squid.conf squid.conf.orig

Выводим в файл squid.conf содержимое файла squid.conf.orig без комментариев

cat squid.conf.orig | egrep "^[^#]" > squid.conf

или

cat /usr/local/etc/squid/squid.conf | grep "^[^#]" > squid_new.conf

 

 

image_pdfimage_print

Samba 4 – вход на шары без пароля

cd /usr/ports/net/samba44/
make install clean

Я выбрал только SYSLOG –  Syslog logging support.

Конф файл smb4.conf находиться/создается по пути

/usr/local/etc/

В нем прописываем такие настройки:

[global]
 workgroup = ASUS
 server string = tst home samba server
 security = user
 map to guest = bad password
 guest ok = yes
 load printers = no
# log file = /var/log/samba4/log.%m
 vfs object = full_audit
 full_audit:prefix = %u|%I
 full_audit:failure = none
 full_audit:success = mkdir rmdir open read close pread write pwrite sendfile rename unlink lock
 full_audit:facility = local5
 full_audit:priority = notice
 netbios name = tst
 max log size = 50
 interfaces = lo, alc0
 bind interfaces only = true
 dns proxy = no
 #display charset = koi8-r
 unix charset = koi8-r
 dos charset = cp866

[share]
 comment = Films and Music
 path = /home/share
 public = yes
 browseable = yes
 writable = yes
 guest ok = yes
 read only = no
 #write list = @wheel

[data]
 comment = Films and Soft
 public = yes
 writable = yes
 path = /home/data
 read only = No
 guest ok = Yes
 browseable = Yes

[homes]
 comment = Home Directories
 browseable = no
 read only = no

Дописываем:

echo 'samba_server_enable="YES"' >> /etc/rc.conf

Запускаем

# service samba-server start

Пробуем войти

192.168.1.41/data 
192.168.1.41/share

 

 

image_pdfimage_print

gstat – выявление узких мест

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

Операционная система FreeBSD предоставляет несколько инструментов для проверки дисковой активности, но я предпочитаю пользоваться утилитой gstat(8), поэтому продемонстрирую ее. Достаточно просто запустить команду gstat без аргументов, и она будет выводить обновленную информацию примерно каждую секунду:

dT: 1.003s w: 1.000s
 L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
 0     0     0    0   0.0  0    0   0.0   0.0| fd0
 0     0     0    0   0.0  0    0   0.0   0.0| ada0
 0     0     0    0   0.0  0    0   0.0   0.0| ada0p1
 0     0     0    0   0.0  0    0   0.0   0.0| ada0p2
 0     0     0    0   0.0  0    0   0.0   0.0| ada0p3
 0     0     0    0   0.0  0    0   0.0   0.0| ada0p4
 0     0     0    0   0.0  0    0   0.0  98.2| ada0p5
 0     0     0    0   0.0  0    0   0.0   0.0| ada0p6
 0     0     0    0   0.0  0    0   0.0   0.0| gptid/3d69e5bd-2b01-11e5-92c7-0030840a99af

Мы видим здесь разнообразную информацию о каждом диске, участке и разделе в виде отдельных строк для каждого устройства. Утилита gstat(8) показывает разнообразную полезную информацию, например, количество операций чтения в секунду (r/s), количество операций записи в секунду (w/s), скорость чтения и записи в килобайтах в секунду, а также число миллисекунд, затраченных на каждую операцию чтения и записи. Первое, на что следует обратить внимание, — колонка %busy, вторая справа.

Находим загруженный раздел (например) ada0p5 – на него приходится 98,2% активности и сотни операций чтения в секунду. Проверив содержимое файла /etc/fstab или воспользовавшись командой mount, можно увидеть, что раздел ada0p1 является разделом /usr данного сервера. Какие-то процессы читают много, очень много данных с диска… Но что это за процессы? Чтобы ответить на этот вопрос, необходимо воспользоваться другим инструментом.

 

 

image_pdfimage_print

vmstat – выявление узких мест

Утилита vmstat служит для определения производительности системы. Наиболее эффективным средством для оценки необходимого объема ресурсов является команда vmstat, которая предоставляет информацию о загруженности процессора, интенсивности операций дискового ввода-вывода и использовании оперативной памяти. Если вы укажете в команде vmstat довольно большой период сбора информации, например, 10 секунд, то выполнение этой команды не потребует много процессорного времени.

Ключи запуска vmstat

  • -S unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)

Расшифровка вывода vmstat

Выдавать информацию о состоянии системы каждые 10 секунд, количество запросов 3 (если не указано – выводить бесконечно).

# vmstat 10 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  18616 8160120 329144 5773240    0    0     8    58    0    2  5 10 81  4  0	
 1  0  18616 8159608 329152 5773372    0    0     0   312 6485 2252  3  8 87  3  0	
 1  0  18616 8159932 329164 5773464    0    0     0   323 6703 1760  3  8 87  2  0

Первый отчет команды vmstat содержит информацию, накопленную с момента загрузки системы до вызова команды vmstat. В каждом следующем наборе выдается информация, собранная за предшествующий интервал времени (в данном случае – за 10 секунд).

  • Если сумма значений в полях us и sy (соответственно пользователь и система) в разделе ресурсов cpu в каком-либо интервале превышает 90%, то нагрузка на ЦП в этом интервале была близка к предельной.
  • Сокращения si и so означают количество операций загрузки и выгрузки страниц из области подкачки (swap). Если эти операции выполнялись, то объем оперативной памяти недостаточно, стоит задуматься об увеличении.
  • Если значение в колонке wa (ожидающие операции ввода-вывода) отлично от нуля (в то время как значения в колонках si и so нулевые), то это означает, что некоторая часть времени уходит на ожидание операций ввода-вывода, поэтому производительность некоторых процессов в системе ограничена ресурсами устройств ввода-вывода.
Если в отчете команды vmstat указано значительное время ожидания ввода-вывода (колонка wa), то рекомендуется вызвать команду iostat для получения более подробной информации.

Для получения информации о работе процессора удобнее использовать команду vmstat, а не iostat, так как ее построчный вывод проще анализировать, а в случае, когда к системе подключено много дисков, ее вывод намного менее объемный.

Для систем SMP в столбцах us, sy, id и wa указываются средние значения по всем процессорам (статистическую информацию об отдельных процессорах можно получить с помощью команды sar).

Оптимальной является ситуация, когда процессор работает 100 процентов времени. Это условие всегда выполняется в однопользовательской системе, если в ней нет конкуренции за процессор. В общем случае, если суммарное время us + sy меньше 90 процентов, то считается, что производительность однопользовательской системы не ограничена ресурсами CPU. Однако если значение us + sy в многопользовательской системе превышает 80 процентов, то некоторые процессы часть времени находятся в состоянии ожидания. Это может отрицательно сказаться на времени ответа и скорости работы приложений.

В столбцах procs указывается следующее:

  • r. Среднее количество процессов, которые каждую секунду находятся в очереди выполнения(т.е. стоят в очереди на выполнение процессором). В это количество не входят процессы, находящиеся в режимах ожидания различных событий (как то , ввод с терминала, дисковый и сетевой ввод-вывод и т.п.). Усредненное значение этой величины называется Load Average и его можно видеть в выводе команд top и uptime. Высокое значение r(Load Average) говорит о том, что системе потенциально не хватает производительности. Для всех систем, за исключением SMP, оно должно быть меньше пяти. В системах SMP это число должно быть не меньше следующего значения:

    5 x (Ntotal - Nbind)

    Здесь Ntotal – это общее число процессоров, а Nbind – это число процессоров, которые связаны с определенными процессами, например. Если это значение быстро растет, то проверьте правильность работы приложений. Некоторые системы могут нормально работать, даже если в очереди выполнения находится от 10 до 15 нитей, поскольку все зависит от назначения нитей и времени их выполнения.

  • b. Количество процессов в очереди ожидания, заблокированных на операциях дискового ввода-вывода, которые требуют завершения. В этой очереди находятся нити, ожидающие освобождения ресурса или выполнения операции ввода-вывода. Кроме того, в эту очередь помещаются нити, ожидающие загрузки одной из своих страниц в оперативную память. Обычно это значение близко к нулю. Однако если число нитей в очереди выполнения увеличивается, то, как правило, длина очереди ожидания также увеличивается. Если в течение одной секунды одновременно было активировано несколько нитей, то длина очереди выполнения может быть довольно большой. При этом показатель использования процессора может быть довольно низким, если эти нити были сразу же приостановлены. Если процессы в системе приостанавливаются из-за перегрузки памяти, то прирост нитей отражает именно значение в столбце b отчета vmstat, а не число нитей в очереди выполнения.

В столбцах memory указывается следующее:

  • free. Значение отражает среднее число свободных страниц памяти. Страницей называется блок физической памяти размером 4 Кб.

В столбцах swap указывается следующее:

  • si. Количество памяти выгруженной в области подкачки (swap).
  • so. Количество памяти загруженной из области подкачки (swap).

В столбцах io указывается следующее:

  • bi. Количество блоков информации прочитанных с жестких дисков в секунду (blocks/s).
  • bo. Количество блоков информации записанных на жесткие диски в секунду (blocks/s).

В столбцах system указывается следующее:

  • in. Число прерываний, поступавших от устройств каждую секунду в течение интервала сбора информации.
  • cs. Число переключений контекста, выполнявшихся каждую секунду в течение интервала сбора информации. Все время работы процессора разделяется на логические кванты времени по 10 миллисекунд. Любая нить выполняется до тех пор, пока не истечет квант времени, пока она не будет замещена нитью с более высоким приоритетом, либо пока она добровольно не передаст управление другой нити. Когда управление передается другой нити, контекст, или рабочая среда, предыдущей нити сохраняется, а вместо него загружается контекст текущей нити. В операционной системе предусмотрена очень эффективная процедура переключения контекста, поэтому на переключение контекста тратится лишь незначительная часть ресурсов. Однако при значительном росте числа переключений контекста, например, когда значение cs становится намного больше скорости дискового ввода-вывода и скорости передачи пакетов по сети, необходимо дополнительно проанализировать ситуацию.

В столбцах cpu указывается следующее:

  • us. В столбце us указывается, какая доля времени ЦП (в процентах) была затрачена на работу в пользовательском режиме. Процессы UNIX могут выполняться в пользовательском или системном режиме (режиме ядра). При работе в пользовательском режиме процесс выполняется в рамках приложения. Ему не требуются ресурсы ядра для выполнения вычислений, управления памятью и настройки переменных.
  • sy. В столбце sy указывается, какая доля времени процессора была затрачена на выполнение процессов в системном режиме. Это значение отражает ресурсы ЦП, которые были затрачены на выполнение процессов ядра и других процессов, использующих ресурсы ядра. Для получения доступа к ресурсам ядра процесс отправляет системный вызов, в результате чего он переключается в системный режим. Например, при выполнении операции чтения или записи данных в файл ресурсы ядра применяются для открытия файла, смещения указателя в нужную позицию и последующего чтения или записи данных (если файл еще не загружен в оперативную память).
  • id. В столбце id указывается, какую долю времени (в процентах) процессор простаивал, не ожидая завершения локальной операции дискового ввода-вывода. Если ни одна нить не готова к работе (очередь выполнения пуста), то система запускает специальный процесс wait. В системе SMP нить wait может быть запущена на каждом процессоре. В отчете команды ps(запущенной с опцией -k или -g 0) этот процесс указывается как kproc или wait. В однопроцессорной системе ИД этого процесса (PID) обычно равен 516. В системах SMP процесс kproc будет указан для каждого процессора в отдельности. Если в отчете ps указано, что на эту нить в целом затрачивается много времени, то это означает, что существуют большие промежутки времени, в течение которых ни одна нить не готова к работе и не ожидает запуска. Следовательно, система преимущественно простаивает, ожидая появления новых задач. Если нет ожидающих операций ввода-вывода на локальный диск, то все время, указанное как время ожидания, задает время простоя.
  • wa. В столбце wa указывается доля времени, в течение которого процессор простаивал, ожидая завершения операции ввода-вывода на локальный диск. Если во время выполнения процесса wait в системе есть хотя бы один процесс, ожидающий выполнения ввода-вывода, то это время рассматривается как время ожидания завершения операции ввода-вывода. За исключением случаев, когда операции ввода-вывода выполняются асинхронно с процессом, процесс блокируется на время выполнения запросов на обмен данными с диском. После выполнения запроса на ввод-вывод процесс снова помещается в очередь выполнения. Чем быстрее выполняется обмен данными с диском, тем больше времени CPU будет тратиться на выполнение процессов. Если значение wa больше 25 процентов, то можно сделать вывод, что дисковая подсистема плохо сбалансирована, либо в системе выполняется очень много дисковых операций ввода-вывода. Если бы диски могли работать быстрее (wa маленький) то и выполнение процессов ускорилось бы также.

Экран разбит на шесть разделов: процесс (procs), память (memory), пейджинг (page), диски (disks), ошибки (faults) и процессор (cpu). Кратко рассмотрим каждый раздел, а затем углубимся в вопросы, имеющие наибольшее значение при исследовании производительности.

root@web:vmstat
 procs memory page disks faults cpu
 r b w avm   fre flt re pi po fr  sr  ad0 pa0 in  sy   cs   us sy id
 1 0 5 1223M 15M 595  0  1  1 648 391  0    0 159 1471 2492  2  3 95

Экран разбит на шесть разделов: процесс (procs), память (memory), пейджинг (page), диски (disks), ошибки (faults) и процессор (cpu). Кратко рассмотрим каждый раздел, а затем углубимся в вопросы, имеющие наибольшее значение при исследовании производительности.

Процессы

Под заголовком procs есть три колонки.

r
Количество процессов, ожидающих времени процессора. Они готовы к запуску, но не могут получить доступ к процессору. Если их много, то узким местом системы является процессор.

b
Количество процессов, блокированных в ожидании системного ввода или вывода. Обычно это ожидание доступа к диску. Такие процессы будут запущены сразу после получения нужных им данных. Если это число велико, узким местом является диск.

w
Показывает процессы, которые были запущены, но полностью вытеснены. Если процессы начинают вытесняться регулярно, размер памяти не соответствует заданиям, выполняемым в системе.

Память

FreeBSD разбивает память на фрагменты, которые называются страницами. Все страницы, выделяемые процессам, имеют одинаковый размер. Размер страницы зависит от аппаратной платформы и операционной системы. Система обрабатывает страницы целиком, например, если требуется вытеснить память в пространство свопинга (область подкачки), она вытесняется целыми страницами. Раздел memoryсостоит из двух колонок.

avm
Среднее количество страниц виртуальной памяти, используемых системой. Если это значение чрезмерно велико, значит, система активно расходует виртуальную память.

fre
Количество страниц памяти, доступных для использования. Если это значение чрезмерно мало, налицо проблемы с памятью.

Пейджинг

Раздел page показывает, как работает система виртуальной памяти. Внутренние механизмы виртуальной памяти — тайная наука, которую я не буду здесь описывать.

flt
Количество ошибок из-за отсутствия страницы (page faults), когда нужной информации нет в памяти и приходится загружать ее с диска, из пространства свопинга.

re
Количество страниц, восстановленных из кэша и повторно использованных.

pi
Сокращение от pages in. Показывает, сколько страниц было перемещено из физической памяти в пространство свопинга.

po
Сокращение от pages out. Показывает, сколько страниц было перемещено из пространства свопинга в реальную память.

fr
Количество освобождаемых страниц в секунду.

sr
Количество просмотренных страниц в секунду.

Вытеснение памяти в пространство свопинга — это совсем неплохо, но постоянное перемещение страниц из области подкачки в реальную память свидетельствует о нехватке памяти. Большие значения в колонках fr и flt могут свидетельствовать о чрезмерном количестве короткоживущих процессов, например CGI-сценарии запускают множество других процессов или слишком часто планируется выполнение некоторых заданий в cron.

Диски

Раздел disks показывает все диски по именам устройств. Числа, показанные здесь, — это количество дисковых операций в секунду, ценная подсказка для тех, кто стремится выяснить, как хорошо диски справляются с нагрузкой. При любой возможности следует распределять дисковые операции между различными дисками, а диски размещать на разных шинах. Если один диск загружен больше остальных, а система ожидает доступа к диску, то наиболее часто используемые файлы надо переместить с одного диска на другой. Одна из постоянно встречающихся причин высокой нагрузки на диски — это аварийное завершение программ с формированием дампа памяти на диске, которые могут перезапускать себя. Например, CGI-сценарий, содержащий ошибку и аварийно завершившийся с формированием дампа памяти на диске, всякий раз, когда кто-то щелкает на ссылке, может существенно увеличивать нагрузку на жесткий диск.

Если дисков много, можно заметить, что не все они появляются в выводе vmstat. Программа vmstat(8) разрабатывалась для работы с экраном шириной 80 символов, поэтому она не может отобразить все диски, если их много. Однако если у вас широкий экран и вы не против того, чтобы вывод программы в ширину превысил ограничение в 80 символов, воспользуйтесь ключом -n, чтобы указать желаемое количество дисков для отображения.

Ошибки

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

in
Количество системных прерываний (запросов IRQ), полученных системой за последние пять секунд.

sy
Количество системных вызовов за последние пять секунд.

cs
Количество переключений контекста (context switches) за последнюю секунду или среднее число переключений в секунду с момента последнего обновления. (Например, если показания vmstat обновляются каждые пять секунд, в этой колонке отображается среднее число переключений контекста в секунду за последние пять секунд.)

Процессор

Наконец, в разделе cpu показано, сколько времени система потратила на выполнение пользовательских (us) и системных задач (sy) и сколько времени система бездействовала (id). Программа top(1) представляет эту же информацию в более дружественном формате, но только для текущего времени, тогда как vmstat позволяет просматривать деятельность системы за длительный период.

Использование vmstat

Как же применить эту информацию? Прежде всего, проверьте первые три колонки и выясните, чего ждет система. Если она ожидает доступа к процессору (колонка r), значит, не хватает мощности процессора. Если система ждет завершения дисковых операций (колонка b), то узким местом являются диски. Если часто происходит вытеснение процессов (колонка w), то в системе не хватает памяти. Другие колонки помогут более детально исследовать причины нехватки этих трех видов ресурсов.

Непрерывное выполнение vmstat

Применяя vmstat, вы наверняка больше заинтересованы в получении информации за определенный период времени, нежели в изучении состояния системы в тот или иной момент. С помощью ключа -w и числа можно запустить программу vmstat так, что она будет непрерывно обновлять показания на экране через заданное число секунд. Параметры использования виртуальной памяти пересчитываются внутренними счетчиками системы каждые пять секунд, хотя другие счетчики обновляются непрерывно.

Тестирование (ключ -s)

Команда, вызванная с опцией -s, записывает в стандартный поток вывода итоговый отчет, который содержит суммарные значения показателей использования памяти, подсчитанные за все время, прошедшее с момента инициализации системы. Эту команду рекомендуется вызывать дважды: до запуска оцениваемой рабочей схемы и после выполнения этой рабочей схемы. Дальше нужно оценить разницу между значениями, полученными в двух отчетах команды.

 

image_pdfimage_print

Sendmail “relayed to non-DSN-aware mailer”

Q. У меня The Bat!, помечаю пункты “Подтверждение доставки”, “Подтверждение прочтения”. Прочтение никогда и никто не подтверждал. Про доставку чаще всего приходит что-то вроде “relayed to non-DSN-aware mailer” и “expect no further notifications“.

A. DSN — это Delivery Status Notification, т.е. “уведомление о состоянии доставки”. Т.е. последний “понимающий” уведомления сервер-“почтальон” “говорит”: “Я передал Ваше сообщение почтальону, который понятия не имеет об уведомлениях о доставке. Уведомлений больше не ждите” (“relayed to non-DSN aware mailer; expect no further notifications“).

Утешительно лишь то, что если DSN обычно генерируются серверными “почтальонами”, т.е. MTA (Mail Transport Agents) (хотя и некоторые клиентские программы (MUA, Mail User Agents) умеют их генерировать), то уведомления о прочтении генерируются именно MUA (например, Вашим The Bat!).

Поэтому если Вы заказывали именно уведомление о прочтении, то ничто не мешает адресату (если он захочет, конечно :)) послать его Вам: заказ этого уведомления он по идее увидит (и сможет выполнить) независимо от того, знают ли почтовые серверы о DSN.

image_pdfimage_print

Бесплатный SSL-сертификат от Letsencrypt для Apache

При попытке установить сертификат, выяснилось, что клиент py27-letsencypt заменён на py27-certbot и теперь обновление сертификатов letsencrypt делаем так.

Проект letsencrypt, даёт возможность свободно получить SSL/TLS сертификаты. Цель сделать шифрованное соединение максимально доступным. Проект развивается. На FreeBSD cтавится клиент letsencrypt, ему нужны 80 и 443 порты. Через него запрашиваются и скачиваются сертификаты для указанных доменов. Пока сертификаты ставим в ручную, но в будующем letsencrypt обещает процесс полностью автоматизировать.

Устанавливаем certbot:

root@tst: cd /usr/ports/security/py-certbot
root@tst: make install clean

Запускаем:

root@tst: certbot certonly --agree-tos --email postmaster@tst-amo.pp.ua -d tst-amo.pp.ua

Увидим процесс, если выбираем пункт (1), то  – предварительно останавливаем вебсервер :

Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for tst-amo.pp.ua
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
 /usr/local/etc/letsencrypt/live/tst-amo.pp.ua/fullchain.pem. Your
 cert will expire on 2017-10-08. To obtain a new or tweaked version
 of this certificate in the future, simply run certbot again. To
 non-interactively renew *all* of your certificates, run "certbot
 renew"
 - If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
 Donating to EFF: https://eff.org/donate-le

Когда установка SSL сертификата Apache будет завершена, вы найдете созданные файлы сертификатов в папке /usr/local/etc/letsencrypt/live. В этой папке будут четыре файла (точнее ссылки на них):

cert.pem - ваш сертификат домена;
chain.pem - сертификат цепочки Let's Encrypt;
fullchain.pem - cert.pem и chain.pem вместе;
privkey.pem - секретный ключ вашего сертификата.

Вставляем сертификаты в Апач.

Теперь вы можете зайти на сайт по https. Чтобы проверить как работает SSL и правильно ли выполнена установка ssl сертификата на сайт, вы можете открыть в браузере такую ссылку:

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Установка SSL/TLS сертификата на сервер для каждого из доменов

Пробрасываем, и/или открываем 80 443 порты в httpd-vhosts.conf, для нужных доменов прописываем:
#site.ru
<VirtualHost *:80>
    ServerName site.ru
    DocumentRoot «/site.ru/site.ru»
    Redirect permanent «/» «https://site.ru/»
</VirtualHost>
<VirtualHost *:80>
    ServerName www.site.ru
    DocumentRoot «/site.ru/site.ru»
    Redirect permanent «/» «https://site.ru/»
</VirtualHost>
<VirtualHost *:443>
    ServerName www.site.ru
    DocumentRoot «/site.ru/site.ru»
    Redirect permanent «/» «https://site.ru/»
    SSLCertificateFile /usr/local/etc/letsencrypt/live/site.ru/fullchain.pem
    SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/site.ru/privkey.pem
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
</VirtualHost>
<VirtualHost *:443>
    SecRuleEngine On
    ServerName site.ru
    ServerAlias www.site.ru
    ServerAdmin admin@site.ru
    DocumentRoot «/site.ru/site.ru»
    ErrorLog «/var/log/site.ru-error_log»
    CustomLog «/var/log/site.ru-customlog» combined
    SSLCertificateFile /usr/local/etc/letsencrypt/live/site.ru/fullchain.pem
    SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/site.ru/privkey.pem
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
…
</VirtualHost>

Производится редирект с 80 на 443 для всех запросов, также реализованна склейка www и не www как для http так идля https. Модуль mod_rewrite не иcпользуем, не рекомендуется, всегда есть альтернативы.

Сертификат выдаётся на 3 месяца, далее делаем обновление, или заранее настраиваем автообновление через скрипт + crontab. Обновление действует следующие 3 месяца.

Для проверки можно запустить скрипт

/usr/local/bin/certbot renew --dry-run

Если отработает нормально – ставим и задачу в cron, и перезагрузку Apache

crontab -e

31 1 8 * * /usr/home/svm/bin/certbot.sh
32 1 8 * * /usr/local/sbin/apachectl reload

Сам скрипт:

#!/bin/sh
/usr/local/bin/certbot renew
root@tst: certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /usr/local/etc/letsencrypt/renewal/tst-amo.pp.ua.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal

The following certs are not due for renewal yet:
 /usr/local/etc/letsencrypt/live/tst-amo.pp.ua/fullchain.pem (skipped)
No renewals were attempted.

Проверяем, например, на сайтах

https://www.sslshopper.com/
https://rus.gogetssl.com/check-ssl-installation/
image_pdfimage_print