Couldn’t find PV pv1. Check your device.map

Виртуалка на базе KVM с lvm2 внутри.
В свое время для увеличения дискового пространства был добавлен второй диск.

И вот при очередном обновлении ядра вылезла ошибка:

Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
Generating grub.cfg ...
/usr/sbin/grub-probe: error: Couldn't find PV pv1. Check your device.map.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postinst line 799.
dpkg: error processing linux-image-2.6.32-5-amd64 (--configure):
 subprocess installed post-installation script returned error exit status 2
Errors were encountered while processing:
 linux-image-2.6.32-5-amd64

При просмотре файла /boot/grub/device.map увидел, что там указан только один диск:

# cat /boot/grub/device.map 
(hd0)   /dev/vda
#

После добавления второго диска в /boot/grub/device.map:

# cat /boot/grub/device.map 
(hd0)   /dev/vda
(hd1)   /dev/vdb

обновление завершилось без ошибок:

# aptitude safe-upgrade
The following partially installed packages will be configured:
  linux-image-2.6.32-5-amd64 
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
Setting up linux-image-2.6.32-5-amd64 (2.6.32-35) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done

 

Что и требовалось.

Домены *.ua и whois

с 15 мая сервер whois.net.ua, который использовался для whois-а украинских доменов, теперь выдает информацию только о доменах *.net.ua (что в принципе, как бы логично).
В этой связи, при попытке проверить информацию о любом украинском домене можно видеть такой текст:

# whois test.ks.ua

% This server contains information for .net.ua only.
% Please, refer to whois.ua for information on other .ua subdomains.

Отныне, официальным адресом whois-сервера по доменам .UA является WHOIS.UA

А пока пакет whois не обновился (whois-сервера прописаны непосредственно в коде), проверить домены можно так:
whois -h whois.ua имя_домена.ua

В результате получим ожидаемый ответ:

# whois -h whois.ua test.ks.ua
% This is the Ukrainian Whois query server #I.
% Rights restricted by copyright.
%

% % .UA whois
% Domain Record:
% =============
domain:     test.ks.ua
admin-c:    SP999-UANIC
tech-c:     SP999-UANIC
status:     OK-UNTIL 20120309140546
nserver:    ns1.linevps.net
nserver:    ns2.linevps.net
nserver:    ns3.linevps.net
created:    0-UANIC 20090309140547
changed:    UARR169-UANIC 20110514194558
source:     UANIC

Вышел nginx 1.0

12/04/2011 вышла стабильная версия nginx.
Так же уже доступен svn репозитарий по адресу svn://svn.nginx.org

Deb-пакет для lenny / squeeze / wheezy от debian.org.ua будет готов чуть позже уже в репозитарии на http://ftp.debian.org.ua/debian-dou/

Начиная с этой версии дополнительно включена поддержка IPv6 и GeoIP (deb-пакет собран с опциями –with-ipv6 и –with-http_geoip_module)

Собственный хостинг

C 26.03.2011 блог переехал на собственный хостинг.

Адрес нового хостинг-проекта: https://www.linevps.com.
Довольно гибкие тарифы – оплата только за то, что используется. Панель управления – DirectAdmin. Ежедневное архивирование всех данных как локально, так и на удаленный сервер. Никаких проблем с правами на файлы – скрипты выполняются от имени пользователя. Географически разнесенные NS-серверы (Украина и Германия).

Вообщем, пробуйте.

apache и htaccess

Итак, дано: сервер с директадмином и стандартными настройками apache.
До определенного момента все прекрасно работало и “вдруг” перестало.

Симптомы:
у одного из юзеров перестали выполняться cgi скрипты, на многих доменах вместо сайта – 404 ошибка или 403.
В корне доменов (domain/public_html/…) файла htaccess нет, но такое впечатление, что делается переопределение с index.php на index.html и другие манипуляции с типами.
Конфиги апачи правильные, ничего подозительного нет. У пользователя в аккаунте более 300 доменов, подумалось, может какие грабли у апачи при таком количестве доменов на одном пользователе.
Оказалось что проблема совсем в другом и достаточно тривиальна.

Фикс проблемы.
Выяснил, что в корне хомки (/home/username/) лежит файлик .htaccess, где все и реврайтилось.
После переименования /home/username/.htaccess все заработало как прежде.

Дополнение.
Точно также себя ведет вебсервер под ISPmanager-ом.

Вывод.
Не создавайте .htaccess выше public_html, т.е. выше корня сайта.
По крайней мере это касается серверов с directadmin-ом

Установка IPSET, TARPIT и т.д. на Squeeze

Честно скопи-пастил отсюда 🙂

# aptitude update && aptitude install module-assistant xtables-addons-source
# m-a prepare
# m-a auto-install xtables-addons-source
# depmod -a

Новые таржеты для iptables:

  • CHAOS: randomly use REJECT, DELUDE or TARPIT targets.
    This will fool network scanners by returning random results
  • DELUDE: always reply to a SYN by a SYN-ACK. This will fool TCP half-open discovery
  • DHCPADDR: replace a MAC address from and to a VMware host
  • IPMARK: mark a packet, based on its IP address
  • LOGMARK: log packet and mark to syslog
  • SYSRQ: trigger a sysreq over the network (sending a saK over the network looks like a real funny ida
  • TARPIT: try to slow down (or DoS) remote host by capturing the session and holding it for a long time, using a 0-bytes TCP window. Run that on port 25 if you have no mail server to slow down spammers 😉

Новые совпадения (matches) для iptables:
condition: match on boolean value stored in /proc/net/nf_condition/name
dhcpaddr: match the DHCP Client Host address in a DHCP message
fuzzy: match a rate limit based on a fuzzy logic controller
geoip: match a packet by its source or destination country
ipp2p: match (certain) p2p protocols
quota2: named counters
pknock: port knock
…. и другие.

У себя собрал, но запустить в работу еще руки не дошли.

mod_ruid2 и php mail() = sender verify failed

При использовании apache + mod_ruid2 в некоторых случаях может не доставляться почта, отправленная с помощью php-шной функции mail(), не смотря на все корректно заполненные заголовки.

При попытке отправить письмо приходит “отлуп”:

Subject: Mail delivery failed: returning message to sender

This message was created automatically by mail delivery software. A message that you sent could
not be delivered to one or more of its recipients. This is a permanent error.

The following address(es) failed: remoteuser@domain.com 
SMTP error from remote mail server after 
RCPT TO:: host mx.domain.com.ua [89.1xx.xx.xx]: 550 Can't verify sender

Кто-то уже сталкивался с таким ?

Update:
Вылечилось легкой правкой конфига Exim-а

Причина проявления данного эффекта связана с тем, что вот эта директива, указанная в юзеровском httpd.conf:

    php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f user@domain.net'

полностью игнорировалась.

Фикс такой – добавляем в конфиг ексима следующее:

local_from_check = false
local_sender_retain = true
untrusted_set_sender = *

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

Для справки.
до установки мода mod_ruid2 php скрипты работали под именем apache. В свою очередь, пользователь apache входит в trusted_users в конфигурации ексима.
Поэтому заголовок ‘Sender:’ изменялся с помощью “sendmail -t -i -f user@domain.net” вполне нормально.

После установки mod_ruid, скрипты выполняются уже от имени владельца, который не входит в trusted_users и естественно не мог сделать подмену ‘Sender:’ и ‘From:’

Как проверить почтовый сервер на open relay

Когда давно тестировал свой почтовик на предмет открытого релая, но потом забыл адрес.
Сегодня наткнулся снова, решил тут сохранить.

Есть довольно неплохой сервис, который тестирует на разного рода виды открытого релея.
Использовать его очень просто – необходимо подключиться telnet-ом (порт 23) с хоста, где запущен почтовый сервер, вот на этот адрес: relay-test.mail-abuse.org

Почти сразу после подключения начнется тестирование почтового сервера. Этот сервис подключится по SMTP обратно на хост, откуда инициировано telnet-подключение и будет пробовать различные варианты тестирования.
Результаты тестов отображаются тут же в telnet сессии.

Примерно так:

# telnet relay-test.mail-abuse.org
Trying 168.61.4.13...
Connected to Cygnus.mail-abuse.org.
Escape character is '^]'.
Connecting to 193.1x.x.x ...
< << 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.host.net Hello cygnus.mail-abuse.org [168.61.4.13]
:Relay test: #Quote test
>>> mail from: 
< << 250 OK
>>> rcpt to: < "nobody@mail-abuse.org">
< << 501 <"nobody@mail-abuse.org">: recipient address must contain a domain
>>> rset
< << 250 Reset OK
:Relay test: #Test 1
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 451 Temporary error, please try again later
>>> rset
< << 250 Reset OK
:Relay test: #Test 2
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 451 Temporary error, please try again later
>>> rset
< << 250 Reset OK
:Relay test: #test 3
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 451 Temporary error, please try again later
>>> rset
< << 250 Reset OK
:Relay test: #Test 4
>>> mail from: 
< << 501 : sender address must contain a domain
Connecting to 193.1x.x.x ...
< << 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.host.net Hello cygnus.mail-abuse.org [168.61.4.13]
>>> mail from: 
< << 501 : sender address must contain a domain
>>> rset
< << 250 Reset OK
:Relay test: #Test 5
>>> mail from: <>
< << 250 OK
>>> rcpt to: 
< << 550 Relay not permitted
>>> rset
< << 250 Reset OK
:Relay test: #Test 6
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 451 Temporary error, please try again later
>>> rset
< << 250 Reset OK
:Relay test: #Test 7
>>> mail from: 
< << 501 : domain literals not allowed
Connecting to 193.1x.x.x ...
< << 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.host.net Hello cygnus.mail-abuse.org [168.61.4.13]
>>> mail from: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 8
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 550 ERR. not allowed symbols in domain name
>>> rset
< << 250 Reset OK
:Relay test: #Test 9
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 10
>>> mail from: 
< << 250 OK
>>> rcpt to: < "nobody@mail-abuse.org">
< << 501 <"nobody@mail-abuse.org">: recipient address must contain a domain
>>> rset
< << 250 Reset OK
:Relay test: #Test 11
>>> mail from: 
< << 250 OK
>>> rcpt to: < "nobody%mail-abuse.org">
< << 501 <"nobody%mail-abuse.org">: recipient address must contain a domain
>>> rset
< << 250 Reset OK
:Relay test: #Test 12
>>> mail from: 
< << 501 : domain literals not allowed
Connecting to 193.1x.x.x ...
< << 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.fs-host.net Hello cygnus.mail-abuse.org [168.61.4.13]
>>> mail from: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 13
>>> mail from: 
< << 250 OK
>>> rcpt to: < "nobody@mail-abuse.org"@[193.1x.x.x]>
< << 501 <"nobody@mail-abuse.org"@[193.1x.x.x]>: domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 14
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 501 : malformed address: @[193.1x.x.x]> may not follow >> rset
< << 250 Reset OK
:Relay test: #Test 15
>>> mail from: 
< << 501 Too many syntax or protocol errors
Connecting to 193.1x.x.x ...
<<< 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.host.net Hello cygnus.mail-abuse.org [168.61.4.13]
>>> mail from: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 16
>>> mail from: 
< << 250 OK
>>> rcpt to: < @[193.1x.x.x]:nobody@mail-abuse.org>
< << 501 <@[193.1x.x.x]:nobody@mail-abuse.org>: domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #Test 17
>>> mail from: 
< << 501 : domain literals not allowed
Connecting to 193.1x.x.x ...
< << 220 server1.host.net ESMTP Exim
>>> HELO cygnus.mail-abuse.org
< << 250 server1.host.net Hello cygnus.mail-abuse.org [168.61.4.13]
>>> mail from: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #test 18
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 501 : domain literals not allowed
>>> rset
< << 250 Reset OK
:Relay test: #test 19
>>> mail from: 
< << 250 OK
>>> rcpt to: 
< << 550 Relay not permitted
>>> rset
< << 250 Reset OK
>>> QUIT
< << 221 server1.host.net closing connection
Tested host banner: 220 server1.host.net ESMTP Exim 
System appeared to reject relay attempts
Connection closed by foreign host.

vsftpd: No /usr/sbin/vsftpd found running; none killed.

Итак, сервер: Debian Squeeze + ISPmanager + vsftpd.
При попытке перезапуска фтп демона пишет:

# /etc/init.d/vsftpd restart
Stopping FTP server: No /usr/sbin/vsftpd found running; none killed.

При этом init-скрипт пишет номер процесса:

# cat /var/run/vsftpd/vsftpd.pid  
4634

Но пишет неправильный PID.
По всей видимости, при установке ftp из панели ISPmanager, в конфиг /etc/vsftpd.conf была добавлена строка:

background=YES

Соответственно, в pid файл записывался некорректный пид процесса. Это древний баг, оказывается
Собственно, про это же написано и в /usr/share/doc/vsftpd/README.Debian:

The included init script uses start-stop-daemon's --background option to run
vsftpd in the background.  If you have "background=yes" in your configuration,
the wrong PID will be recorded in /var/run/vsftpd/vsftpd.pid, and the init
script may fail to restart or stop vsftpd later.  Just remove "background=yes"
from vsftpd.conf.

Т.е. комментируем или убираем вообще строку “background=yes”, после чего init-скрипт начинает нормально запускать/останавливать vsftpd

PS. Как все таки, иногда, полезно почитывать документацию 🙂