centos 7 + openfire 4.0.2 + SSO

Заметка на память как заставить openfire работать с SSO

Качаем openfire и устанавливаем

wget http://download.igniterealtime.org/openfire/openfire-4.0.2-1.i386.rpm
yum install ~/openfire-4.0.2-1.i386.rpm

Читать далее «centos 7 + openfire 4.0.2 + SSO»

Перенос виртуального сервера на физический с созданием программного рейда

Задача: перести виртуальный почтовый сервер на физический с созданием RAID 1 (зеркало).

Имеется виртуалка на XenServer и физический сервер с двумя винтами по 1 Тб

Установим Centos minimal на один из винтов и поделим диск на разделы

/dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /

Теперь установим mdadm и vim (обожаю этот текстовый редактор)

yum install mdadm vim

Теперь надо подготовить второй диск для настройки на нем рейда. Скопируем схему разбивки диска с /dev/sda

sfdisk -d /dev/sda | sfdisk /dev/sdb

Читать далее «Перенос виртуального сервера на физический с созданием программного рейда»

Уведомление о завершении команды в консоли

Скрипт для zsh позволяющий вывести уведомление о завершений команды, если терминал не открыт и команда выполнялась больше 10 секунд.

function active-window-id {
    echo `xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}'`
}

# end and compare timer, notify-send if needed
function notifyosd-precmd() {
    if [ ! -z "$cmd" ]; then
        cmd_end=`date +%s`
        ((cmd_time=$cmd_end - $cmd_start))
    fi
    if [ ! -z "$cmd" -a $cmd_time -gt 10 -a "$window_id_before" != "$(active-window-id)" ]; then
            kdialog --title "$cmd_basename completed" --passivepopup "\"$cmd\" took $cmd_time seconds"
            unset cmd
    fi
}
 
# make sure this plays nicely with any existing precmd
precmd_functions+=( notifyosd-precmd )
 
# get command name and start the timer
function notifyosd-preexec() {
    window_id_before=$(active-window-id)
    cmd=$1
    cmd_basename=${cmd[(ws: :)1]}
    cmd_start=`date +%s`
}
 
# make sure this plays nicely with any existing preexec
preexec_functions+=( notifyosd-preexec )

Скрипт для КДЕ, т.к. используется kdialog для вывода уведомления. Оригинал на гитхабе. Там же для гнома.

Код сохраняем в файл .notifyosd.zsh и добавляем в .zshrc строку

[ -e ~/.notifyosd.zsh ] && . ~/.notifyosd.zsh

настройка openDKIM в centos 7

Установим opendkim
yum install opendkim

Нужно в /etc/opendkim.conf поправить Mode и раскомментировать строки
Mode sv
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable

Создадим ключи
mkdir /etc/opendkim/keys/example.com
chmod 750 /etc/opendkim/keys/example.com
opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com
chmod 640 /etc/opendkim/keys/example.com/*

Допишем в /etc/opendkim/KeyTable

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private

и в /etc/opendkim/SigningTable
*@example.com default._domainkey.example.com

Перезапустим opendkim
systemctl restart opendkim.service

Осталось научить postfix работать с dkim и указать для домена TXT запись.

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

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

затем
postfix restart

Добавляем TXT запись.
Берем содержимое файла /etc/opendkim/keys/example.com/default.txt

default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=.................." )  ; ----- DKIM key default for example.com

Проверяем
dig txt default._domainkey.example.com

Отправляем тестовое письмо и наслаждаемся результатом.
opendkim

rsyslog, samba, full audit

После настройки самбы и дополнительного full.audit следует озаботиться тем, куда собственно этот аудит будет записываться.

Как рабочий пример:

# less /etc/samba/smb.full_audit.conf
         full_audit:priority = NOTICE
         full_audit:facility = LOCAL5
         full_audit:success = mkdir rmdir read write rename unlink chmod fchmod chown fchown ftruncate lock symlink readlink link mknod close open
         full_audit:failure = none
         full_audit:prefix = |[%S]|%u|%I

Тут важна строка full_audit:facility = LOCAL5

Настраиваем /etc/rsyslog.conf
Находим строку
*.info;mail.none;authpriv.none;cron.none /var/log/messages
и добавляем local5.none дабы в /var/log/messages не заносился аудит самбы
*.info;mail.none;authpriv.none;cron.none;local5.none /var/log/messages
Указываем куда записывать аудит
local5.* /var/log/samba/samba.audit

Дабы применились изменения перезапускаем rsyslog
service rsyslog restart

Однако в /var/log/messages скорее всего появится очень большое количество таких строк
rsyslogd-2177: imuxsock begins to drop messages from pid 194326 due to rate-limiting
rsyslogd-2177: imuxsock lost 684 messages from pid 194326 due to rate-limiting

Это связано с тем, что rsyslog по умолчанию для одного пида записывает в логи не более 200 записей в течении 5 секунд. Т.е. если пользователь заходит в самба шару с большим количеством файлов, то записей в samba.audit может быть больше 200, т.о. появляется запись в /var/log/messages о том, что rsyslog отбросил остальные строки.

Есть три варианта решения (по крайней мере я столько нашел)

1. Отключить ограничение. Добавляем в /etc/rsyslog.conf
$SysSock.RateLimit.Interval 0

2. Поиграться с интервалом и разрешенным чилом записей
например:
$SysSock.RateLimit.Interval 10
$SysSock.RateLimit.Burst 500

3. Убрать записи «imuxsock begins to drop messages бла бла бла» из /var/log/messages
Решается добавлением в /etc/rsyslog.conf после #### RULES ####

:msg, regex, "imuxsock begins to drop messages from pid .* due to rate-limiting" ~
:msg, regex, "imuxsock lost .* messages from pid .* due to rate-limiting" ~

Подробнее здесь

Дабы применились изменения перезапускаем rsyslog
service rsyslog restart

samba, пароль к шаре

Столкнулся с тем, что windows начала просить пароль на доступ к шаре.

В логах /var/log/samba/log.smbd следующее
smbd/server.c:1165(main)
standard input is not a socket, assuming -D option
smbd/server.c:500(smbd_open_one_socket)
smbd_open_once_socket: open_socket_in: Address already in use

лог /var/log/samba/log.nmbd показывает
nmbd/nmbd.c:885(main)
standard input is not a socket, assuming -D option

Проблема оказалась в winbindе. А именно не соответствии имен групп linux и windows. Т.е. группа шары выглядела так:
# ls -l /mnt/lv10/Photoarchive/
total 4
drwxrwx---+ 2 root 16777729 4096 Apr 24 2013 Архив

где gid=16777729 (domain users)

Лечится рестартом winbind
service winbind restart

Dropbox 4 гб бесплатно

Для того чтобы получить от Dropbox 4 гб бесплатно, потребуется телефон с андроидом на борту. За установку и настройку приложения Mailbox, Dropbox подарит 1гб. А установив приложение Carousel получите еще 3гб. Если данные приложения не понравятся их можно смело удалять. Бесплатные 4 гб останутся.

Автозапуск виртуальной машины в Citrix XenServer 6.2

Кратенько. Для 6 версии из XenCenter настроить автозапуск уже не получится, однако можно сделать из консоли.

Для начала добавляем эту возможность для пула.
# xe pool-list
uuid ( RO) : 8a3b99c9-c4e9-802c-1298-794d939fb999
# xe pool-param-set uuid=8a3b99c9-c4e9-802c-1298-794d939fb999 other-config:auto_poweron=true

Теперь для виртуалок, которым требуется автозапуск.
xe vm-list
xe vm-param-set uuid=... other-config:auto_poweron=true

MTP на примере Acer CloudMobile S500

Потребовалось получить доступ к флешке подключенной в телефон Acer CloudMobile S500. Краткая выдержка арч вики с некоторыми комментариями.

Подключаем телефон к компу. В консоли смотрим результат вывода lsusb

% lsusb
...
Bus 001 Device 004: ID 0502:33aa Acer, Inc.
...

Вот и телефон.

Копируем или правим прям там же файл.
% sudo cp /usr/lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/
% sudo vim /etc/udev/rules.d/69-libmtp.rules

Находим строки, в которых упоминается Acer, дублируем одну из них. Изменяем значения idVendor и idProduct на значения нашего аппарата.
# Acer CloudMobile S500
ATTR{idVendor}=="0502", ATTR{idProduct}=="33aa", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

Затем
sudo udevadm control --reload
либо перезагружаемся.

Устанавливаем пакет для работы с mtp
sudo pacman -S mtpfs

Редактируем /etc/fuse.conf Раскомментируем строку
user_allow_other

Создадим какую-нибудь временную директорию и смонтируем в нее телефон
mkdir /tmp/YOURMOUNTPOINT
mtpfs -o allow_other /tmp/YOURMOUNTPOINT

Размонтируем
fusermount -u /tmp/YOURMOUNTPOINT

Для удобства можно создать алиасы в ~/.bashrc
alias android-connect="mkdir /tmp/YOURMOUNTPOINT && mtpfs -o allow_other /tmp/YOURMOUNTPOINT"
alias android-disconnect="fusermount -u /mnt/YOURMOUNTPOINT"