Некоторые команды управления postfix MTA

Посмотреть активные настройки Postfix:
postconf -d
Посмотреть сколько сообщений в очереди:
mailq | grep Requests
Посмотреть конкретно что в очереди:
mailq
Пнуть очередь на немедленную доставку:
postsuper -r ALL; postfix flush
Пнуть конкретное письмо по ID:
postsuper -r ID
Удалить письмо по ID:
postsuper -d ID
Удаление группы писем от определенного FROM (на примере MAILER-DAEMON):
FreeBSD:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 postsuper -d {}
Linux:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 /usr/sbin/postsuper -d {}
Удаление группы писем от определенного FROM в статусе REQUIRE:
mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | tr -d '*' | xargs -I{} -n1 postsuper -d {}

Исключение пакетов из операции в yum (RHEL)

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

Есть два способа.

1) Единоразово – когда запускаете yum, использовать опцию –exclude:

yum –exclude=package* update
yum –exclude=php* update
yum –exclude=*rrd* update
yum –exclude=kernel*,*snmp,perl* update

2) Добавить необходимые пакеты в исключения в конфигурационном файле /etc/yum.conf :
exclude=php* kernel*

Выглядеть это будет примерно так:
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
exclude=php* kernel*

Теперь эти пакеты исключатся из обработки любыми командами yum.

Как загрузиться в single-user режим с загрузчиком grub в Linux

Бывают ситуации, когда нужно включить/перезагрузить сервер в режиме single-user, в котором не загружаются драйвера и нет возможности работать в многопользовательском режиме – что-то вроде Безопасного режима Windows. Например, если на сервере не правильная сетевая конфигурация и он после включения сразу же будет конфликтовать с другими серверами по IP, то в single-user режиме сеть не поднимется и можно будет исправить конфигурацию.

Чтобы это сделать, необходимо при появлении загрузочного экрана Grub:

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

Далее выбираем нужный пункт (версию ядра) стрелками вверх, вниз и нажимаем [a] 

В конце строки параметров загрузки ядра добавляем пробел [Space] и опцию single

Нажимаем [Enter] чтобы загрузиться в нужное ядро с параметром single.

Источники:

  1. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/installation_guide/s1-rescuemode-booting-single

Oracle Linux 6: How to install specific Unbreakable Kernel (UEK) version

If you need to install specific unbreakable kernel (UEK) version for Oracle Linux 6.x you need to complete the following steps:

In this example we will use Oracle Linux 6.8 and our goal is to install 4.1.12-61.1.14 kernel version.

You need to edit /etc/yum.repos.d/public-yum-ol6.repo repository file and search there for UEKx record, where x is the linux release family (4 is the latest for now) and add ‘archive‘ to the path of repository, because by default repository contains only the most recent uek packages:

[public_ol6_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/UEKR4/archive/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=$uekr4

Next you need to install correct packages (assuming that we need to build kernel modules in the future):

yum clean all
yum install kernel-uek-4.1.12-61.1.14.el6uek.x86_64 kernel-uek-devel-4.1.12-61.1.14.el6uek.x86_64 kernel-uek-headers.x86_64

Next, boot into the new kernel version.

Links:

  1. https://yum.oracle.com/oracle-linux-6.html – You can browse and take repository  address from the tab address bar for repository file.
  2. https://yum.oracle.com/oracle-linux-7.html

Linux. Распределение прерываний

Посмотреть распределение прерываний по ядрам в ОС Linux можно командой:

cat /proc/interrupts

Вы должны увидеть нечто следующее:

Где:

  • Первый столбец — номер прерывания
  • CPU0 .. CPUx — счетчик обработанных прерываний по процессорным ядрам
  • PCI-MSI-edge — тип прерывания
  • Последний столбец — название устройства

Как видите, все прерывания по-умолчанию обрабатываются ядром 0. Что не всегда хорошо.

Перенести обработку прерываний на другие ядра можно как в примерах ниже:

# CPU0
echo 1 >/proc/irq/45/smp_affinity
echo 1 >/proc/irq/46/smp_affinity
echo 1 >/proc/irq/47/smp_affinity
# CPU1
echo 2 >/proc/irq/48/smp_affinity
echo 2 >/proc/irq/49/smp_affinity
# CPU2
echo 4 >/proc/irq/50/smp_affinity
echo 4 >/proc/irq/51/smp_affinity
# CPU3
echo 8 >/proc/irq/52/smp_affinity
echo 8 >/proc/irq/53/smp_affinity

Где цифра после echo определяет маску для используемых ядер. Например, использовать только ядро 0 это будет выглядеть 00000001 в двоичной системе исчисления. Ядро 2 – 00000100. 0 и 2 соответственно 00000101, что соответствует 5 в десятичной системе.

Этот метод действует до перезагрузки. Чтобы сохранить настройки и после перезагрузки просто добавляем эти команды в файл /etc/rc.local – это скрипт, автоматически выполняющий своё содержимое при загрузке ОС.

Источники:

  1. https://cesbo.com/ru/linux/interrupts/

Remmina в Debian 9

Есть очень удобный клиент удаленного подключения для ОС Linux – remmina. Удобен он тем, что позволяет сохранять подключения по ssh, RDP, VNC etc со всеми настройками и открывать их одним кликом:

Но в Debian 9 с этой программой небольшая проблемка. В stable ветке её просто напросто нет в репозитории, а в testing она работает не правильно из-за другой версии библиотеки vte3, которую поменять нельзя, т. к. это поломает гном… 🙂

Но выход есть всегда. И он описан на гитхабе [1].

UPD: лучше ставить из экспериментальной ветки Debian, читайте ниже.

Вначале устанавливаем Snap:

aptitude install snapd

Далее устанавливаем саму remmina (–edge говорит, что нужно установить последнюю версию, которая нам и нужна, без этого префикса установится та же, что и в testing Debian и которая не работает):

snap install remmina –edge

Также можно добавить некоторые расширения:

snap connect remmina:avahi-observe :avahi-observe
snap connect remmina:cups-control :cups-control 
snap connect remmina:mount-observe :mount-observe

Теперь нужно как-то по удобнее запускать remmina ибо по-умолчанию она в gnome shell не интегрируется. Для этого копируем remmina.desktop:

aptitude install locate
updatedb
locate remmina.desktop
cp /snap/remmina/161/meta/gui/remmina.desktop /usr/share/applications/

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

Exec=/snap/bin/remmina

Вообще структура каталогов для snap в Debian выглядит следующим образом:

/snap/
├── bin (здесь лежат бинарники программ, установленных через snap)
├── core (базовые файлы snap)
└── remmina (а это папка с файлами приложения, в данном случае установлена только remmina, а если будут еще приложения – они будут здесь также)

Перезаходим в gnome shell – теперь remmina должна появиться в Activities.

UPD:

Как показала практика, remmina из snap глючит. Версия 1.2.х есть только в ветке experimental и чтобы её установить идем на страницу пакета. Здесь внизу в секции Download выбираем нужную архитектуру и копируеи ссылку на зеркало, например – amd64http://ftp.us.debian.org/debian/pool/main/r/remmina/remmina_1.2.0-rcgit.20-1_amd64.deb

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

wget http://ftp.us.debian.org/debian/pool/main/r/remmina/remmina_1.2.0-rcgit.20-1_amd64.deb
dpkg -i remmina_1.2.0-rcgit.20-1_amd64.deb

Будет ругаться на неудовлетворенные зависимости примерно так:

Selecting previously unselected package remmina.
(Reading database … 157173 files and directories currently installed.)
Preparing to unpack remmina_1.2.0-rcgit.20-1_amd64.deb …
Unpacking remmina (1.2.0-rcgit.20-1) …
dpkg: dependency problems prevent configuration of remmina:
remmina depends on libssh-4 (>= 0.6.1); however:
Package libssh-4 is not installed.
remmina depends on remmina-common (= 1.2.0-rcgit.20-1); however:
Package remmina-common is not installed.

dpkg: error processing package remmina (–install):
dependency problems – leaving unconfigured
Processing triggers for gnome-menus (3.13.3-9) …
Processing triggers for desktop-file-utils (0.23-2) …
Processing triggers for mime-support (3.60) …
Processing triggers for man-db (2.7.6.1-2) …
Errors were encountered while processing:
remmina

В моём случае не хватало двух пакетов: libssh-4 и remmina-common. Ищем указанные пакеты на сайте пакета remmina experimental в секции Other Packages Related to remmina и помеченные dep, загружаем их описанным выше образом через wget и устанавливаем с помощью dpkg. Также можно установить плагины для rdp и vnc – они есть там в списке.

Радуемся нормальной реммине.

  1. https://github.com/FreeRDP/Remmina/wiki
  2. https://snapcraft.io/docs/snaps/structure
  3. https://packages.debian.org/en/experimental/remmina

Динамический порт (Ephemeral port)

Динамический порт, или Эфемерный порт — временный порт, открываемый соединением межсетевого протокола транспортного уровня (IP) из определённого диапазона программного стека TCP/IP.

Т. е. это локальный порт, присваемый TCP-соединению операционной системой. Например, вы подключаетесь по ssh к удаленной машине на порт 22. Это удаленный порт, а для обмена данными нужен еще локальный порт, который присваивается ОС автоматически, причем случайным образом из определенного диапазона. Этот диапазон можно узнать в ОС Linux посмотрев файл:

cat /proc/sys/net/ipv4/ip_local_port_range

Изменить этот диапазон можно командой (например, нам нужен диапазон 49152..65535):

echo “49152 65535” > /proc/sys/net/ipv4/ip_local_port_range

Белый и черный список в amavisd-new

Для создания белого списка  в amavisd-new создаем конйигурационный файл с названием например (путь для Debian 7) /etc/amavis/conf.d/whitelist

Есть два пути. В конфигурационный файл (/etc/amavis/conf.d/whitelist) добавляем список доменов:

@whitelist_sender_maps = ([‘.example.org’, ‘.example.net’]);

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

@whitelist_sender_maps = ( new_RE(
qr’.*@something\.com$’i,
qr’oneaddress@example\.com$’i
));

Так же точно добавляется и чёрный список, только вместо @whitelist_sender_maps следует указать @blacklist_sender_maps

Источники:

  1. http://www.akadia.com/services/postfix_amavisd.html#Globally%20Sender%20Whitelists%20and%20Blacklists

Использование утилиты rkhunter для борьбы с руткитами в Linux

Установка.

Здесь всё просто – ставим из репозиториев:

aptitude install rkhunter / yum install rkhunter

или собираем из исходников, взятых с http://rkhunter.sourceforge.net/

Обновление.

Проверяем версию:

rkhunter –versioncheck

Обновляем вирусные базы:

rkhunter –update

Далее нужно обновить базу rkhunter, чтобы он считал текущие файлы утилит чистыми и в дальнейшем выдавал предупреждения при их модификации (эту команду нужно использовать перед первым запуском или после обновлений утилит):

rkhunter –propupd

И наконец-то сама проверка:

rkhunter -c –enable all –disable none

Ждем окончания, нажимая Enter когда попросит и смотрим лог, ища warning или error:

nano /var/log/rkhunter.log

Принимаем меры по необходимости.