Exim: как вывести список IP из файла(ов)

Если вам срочно надо посчитать список IP из файла (в моем примере это письма в почтовом ящике и логи почтового сервера), то можно использовать следующие команды или написать скрипт:

cat /tmp/spam/* | perl -ne 'if (/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/) { print "$1.$2.$3.$4\n" }'

Выведет список всех IP:

195.244.144.2
78.153.0.60
37.9.53.72
194.225.24.191
195.244.144.2
78.153.0.60
37.9.53.72
194.231.200.245
195.244.144.2
87.237.206.37
127.0.0.1
91.222.7.10
188.234.174.163
195.244.144.2
187.19.146.2
109.195.109.233

Exim: сколько писем отправлено за день

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

awk '/<=/ {print $3}' /var/log/exim/main.log | wc -l

Mysql error : Can’t create new tempfile: ‘*.TMD file

Если вы видите данную ошибку и команда repair table не помогает, то настало время починить таблицу иным способом:

myisamchk -f -r /var/lib/mysql/database/table.MYI

Скрипт тестирования производительности БД MySQL

В последнее время особенно актуально встает вопрос – оптимально ли настроена БД, особенно на движках Битрикс где есть встроенная панель производительности, мы можем получить замеры не только БД но и других компонентов системы.
Недавно встал вопрос – есть ли какой-нибудь скрипт, который подобно Битрикс выдаст оценку производительности БД? Такой скрипт есть, написан он на PHP и он вполне рабочий:

Подсчет занимаемого места на сервере

Чтобы вывести список каталогов, размер которых превышает 2G, можно использовать следующую команду:

du -hx --max-depth=8 /home | egrep "^[2-9]{1}\.[0-9]G|^[0-9]{2,3}G|^[1-9]{1}\.[0-9]T"

Вывод будет следующим:

2.5G /home/backups/mysql/dump/nagg_ru
3.5G /home/backups/mysql/dump
2.1G /home/backups/mysql/dumps
5.8G /home/backups/mysql
5.8G /home/backups

error while loading shared libraries: libssl.so.6: wrong ELF class: ELFCLASS32

Довольно нетривиальная ошибка может возникнуть, либо такая:

error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory

Причиной всему то, что Ваше ПО пытается использовать 32-х битные библиотеки SSL, а нужно использовать 64-х битные. Решается проблема одним и тем же способом:

cd /usr/lib64/
ln -s libcrypto.so.1.0.1e libcrypto.so.6
ln -s libssl.so.1.0.1e libssl.so.6

Проверка диска FSCK на LVM разделе

Часто бывает, что после аппаратного сбоя сервер не поднимается. Причиной зачастую является поломанная ФС, с обычными разделами все понятно, запускаем fsck -y /dev/sdX1, но что делать если у Вас раздел LVM?
В данной ситуации необходимо подключить сам LVM раздел, а потом уже начать его проверку. Если Вы точно знаете, что у Вас файловая система в ext3, то можно запускать fsck.ext3.

Скачиваем образ Ubuntu и грузимся с него в редиме восстановления (rescue):

rescue:~# lvm pvscan
rescue:~# lvm vgscan
rescue:~# lvm lvchange -ay /dev/VolGroup00/LogVol00
rescue:~# lvm lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [133.85 GB] inherit
inactive '/dev/VolGroup00/LogVol01' [8.45 GB] inherit
rescue:~# fsck -yfv /dev/VolGroup00/LogVol00

После завершения проверки перезагружаем сервер.
Все!

pure-ftpd: symbol my_make_scrambled_password, version libmysqlclient_15 not defined in file libmysqlclient.so.15

Ошибка появляется при запуске FTP:

/etc/init.d/pure-ftpd start
Starting pure-ftpd: /usr/sbin/pure-ftpd: relocation error: /usr/sbin/pure-ftpd: symbol my_make_scrambled_password, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference
                                                           [FAILED]

Быстрое решение:

cd /usr/local/src
wget -O pure-ftpd.tgz https://sites.google.com/site/sudosuin/pure-ftpd.tgz
tar -xzf pure-ftpd.tgz
cp /usr/sbin/pure-ftpd /tmp/
cp -f /usr/local/src/pure-ftpd /usr/sbin/pure-ftpd

Проверяем:

# /etc/init.d/pure-ftpd start
Starting pure-ftpd:                                        [  OK  ]

Мониторинг потерь пакетов на сервере с помощью mtr

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

Скрипт мониторинга следующий (vi /srv/scripts/mtr.sh):

#!/bin/bash

SCRIPT=`basename $0`
#PS=`pidof /usr/sbin/mtr`
LOG=/var/log/mtr.log
LOCK=/tmp/mtr.lck
DT=`date +%F_%T`

if [ -f "/tmp/mtr.lck" ];then
    #DT=`date +%F_%T`
    #echo "### $DT `basename $0` is running ###" >> $LOG
    exit
fi

touch $LOCK

    DT=`date +%F_%T`
    echo "### start ping $DT ###" >> $LOG
    /usr/sbin/mtr -r -c 1000 X.X.X.X >> $LOG
    DT=`date +%F_%T`
    echo "### stop ping  $DT ###" >> $LOG
    echo "" >> $LOG

rm -f $LOCK

Exim + DKIM на примере CentOS

Exim поддерживает DKIM, начиная с версии 4.71. В данный момент в репозитарии CentOS доступна версия 4.72, она нам отлично подходит, устанавливаем:

yum install -y exim exim-mysql exim-sa

Для начала формируем связку Private + Public ключей. Генерируем секретный ключ с помощью openssl:

openssl genrsa -out /etc/exim/dkim/example.com.key 1024

Generating RSA private key, 1024 bit long modulus
.............++++++
............................................++++++
e is 65537 (0x10001)

Следующим шагом генерируем публичный ключ на основе секретного:

openssl rsa -in /etc/exim/dkim/example.com.key -pubout

writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5AsOOA2+NNqh9h3IvFPwJVH9b
NNvo7MHbGk7oMsjIErEjBpd5J4gqMKgNX9RWMvXVUUiGyS43iQ79I1suxVzP4PNc
JFq494bQoCxJzmj33rLaeFnVZMMB+Yzzn0JuCmE7Pr6M7tIPKrFdEcVnlAYP3+kT
zuAo7WB97RqfgpEbNwIDAQAB
-----END PUBLIC KEY-----