2006/10/31

ErrorDocument

Для того, чтобы обрабатывать все запросы на несуществующие страницы Apache имеет директиву ErrorDocument. Синтаксис прост:
ErrorDocument 404 /page404.php

Файл page404.php показывает возможные варианты применения данной функции

echo "REDIRECT_ERROR_NOTES=".$REDIRECT_ERROR_NOTES."
";
echo "REDIRECT_QUERY_STRING=".$REDIRECT_QUERY_STRING."
";
echo "REDIRECT_REQUEST_METHOD=".$REDIRECT_REQUEST_METHOD."
";
echo "REDIRECT_STATUS=".$REDIRECT_STATUS."
";
echo "REDIRECT_UNIQUE_ID=".$REDIRECT_UNIQUE_ID."
";
echo "REDIRECT_URL=".$REDIRECT_URL."
";
?>

Для того, чтобы директива срабатывала для MSIE, вывод page404.php должен быть не меньше 512 байт, иначе MSIE игнорирует сообщения, генерируемые сервером.

2006/10/24

Создание резервной копии базы данных mysql

Если размер mysql-базы настолько велик, что сделать копию web-средствами не представляется возможным, то можно применить консольную утилиту mysqldump
mysqldump -u username -ppassword database > database.sql

2006/10/16

Spamassassin + MySQL

Система фильтрации нежелательной корреспонденции Spamassassin умеет хранить пользовательские настройки, а также динамические базы, применяемые в работе (auto-whitelist, bayes filter) в SQL-базе данных. Ниже приведена настройка Spamassassin 3.0.3 для работы в связке с MTA Exim 4.50 (Debian Sarge) на примере СУБД MySQL.

1. Подготовить MySQL-базу

mysql -u root -p
Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE `spamassassin_db`;
Query OK, 1 row affected (0.09 sec)

mysql> GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'pasword';
Query OK, 0 rows affected (0.07 sec)

mysql> GRANT ALL PRIVILEGES ON `spamassassin_db`.* TO 'username'@'localhost';
Query OK, 0 rows affected (0.07 sec)

2. Подготовить необходимые таблицы (схемы таблиц находятся в /usr/share/doc/spamassassin/sql)

cd /usr/share/doc/spamassassin/sql
# mysql -u username -p spamassassin_db < userpref_mysql.sql
# mysql -u username -p spamassassin_db < bayes_mysql.sql
# mysql -u username -p spamassassin_db < awl_mysql.sql

3. Осуществить импорт накопленных bayes-токенов

su -m -c "sa-learn -D --backup > /tmp/backup.txt" Debian-exim
su -m -c "sa-learn --restore /tmp/backup.txt" Debian-exim

4. Осуществить импорт awl-базы (понадобится скрипт convert_awl_dbm_to_sql из набора spamassassin tools)

cd /usr/local/bin
wget http://spamassassin.apache.org/full/3.0.x/dist/tools/convert_awl_dbm_to_sql
chmod +x convert_awl_dbm_to_sql
su -m -c "/usr/local/bin/convert_awl_dbm_to_sql --username Debian-exim --dsn DBI:mysql:spamassassin_db:localhost --dbautowhitelist /var/spool/exim4/.spamassassin/auto-whitelist --sqlusername username --sqlpassword password --ok" Debian-exim

5. Добавить конфигурационный файл, описывающий необходимость использования mysql-базы для хранения пользовательских настроек (userpref), данных автоматического whitelist'а (awl) байесовского фильтра.

cat > /etc/mail/spamassassin/sql.cf

user_scores_dsn DBI:mysql:spamassassin_db:localhost:3306
user_scores_sql_username username
user_scores_sql_password password
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:spamassassin_db:localhost:3306
user_awl_sql_username username
user_awl_sql_password password
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:spamassassin_db:localhost:3306
bayes_sql_username username
bayes_sql_password password

6. Добавить в запускной скрипт опцию -q, при наличии которой spamassassin будет пытаться использовать sql-базы, описанные в конфигурационных файлах (на время тестирования можно добавить опцию -D (debug)).

7. Перезапустить Spamassassin

/etc/init.d/spamassassin restart


Ссылки:

1. Migrating our Debian Anti-Spam Anti-Virus Gateway Email Server's Bayes database to MySQL
2. Loading SpamAssassin User Preferences From An SQL Database
3. Spamassassin Wiki - UsingSQL

2006/10/11

Как скачать сайт целиком из коммандной строки?

Наверное во всех современных дистрибутивах *nix имеется команда wget. С ее помощью прямо из коммандной строки возможно "утянуть" сайт со всем его содержимым.
wget -r -k -p -N -l 1 http://www.site.com/
  • -r рекурсия
  • -k конвертация ссылок на полученных страницах
  • -p включать все содержимое страниц (картнки и т.п.)
  • -N включить time-stamping. Понадобится, если потом нужно будет скачать только обновившиеся ресурсы
  • -l глубина ссылок(по умолчанию 5)

2006/10/10

Roller Blog - Planet aggregator

Planet aggregator позволяет добавлять общую rss-ленту на сайте блогов, с возможностью подписки внешних ресурсов. Чтобы добавить Planet-таб на установленный Roller Blog, необходимо внести в основной конфигурационный файл roller.properties следующие изменения:
planet.aggregator.enabled=true
# обновлять список локальных блогов каждый день
tasks.daily=\
org.apache.roller.presentation.planet.SyncWebsitesTask
# обновления ленты каждый час
tasks.hourly=\
org.apache.roller.presentation.planet.RefreshEntriesTask
# tomcat-пользователь должен иметь права на запись в данную директорию
planet.aggregator.cache.dir=/directory_of_aggregator_cache

После внесенных изменений необходимо перегрузить tomcat

/etc/init.d/tomcat restart

2006/10/09

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

Чтобы вся исходящая корреспонденция шла с одного сервера (smarthost) в настройку локальных MTA необходимо добавить:

Sendmail
1. В /mail/sendmail.cf
# "Smart" relay host (may be null)
DSmy.smarthost.server

Если вместо dns-имени сервера используется ip-адрес, его необходимо брать в квадратные скобки, например DS[10.10.10.1]

2. Перезапустить sendmail

/etc/rc.d/rc.sendmail restart

1. Если используется mc-файл для конфигурирования sendmail'а, в /mail/sendmail.mc

define(`SMART_HOST',`my.smarthost.server')
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

2. Перезапустить sendmail

/etc/rc.d/rc.sendmail restart

Exim (Debian)

1. В /etc/exim4/update-exim4.conf

dc_smarthost='my.smarthost.server'

2. Перегенерировать конфигурацию

update-exim4.conf

3. Перезапустить exim

/etc/init.d/exim4 restart

spamassassin out of memory

При использовании Spamassassin 3.0.3 возможны проблемы с утечкой памяти - порождаемый процесс spamd может потребовать от системы столько памяти, сколько в наличии нет. А если spamd запущен с правами суперпользователя (по-умолчанию), система может начать завершать выполняющиеся приложения. Множество решений данной проблемы предлагает Spamassassin Wiki - Out of memory problems.
Большинство советов логичны и используются многими администраторами при первоначальной конфигурации сервиса spamd. Стоит обратить внимание на 2 особенно важных совета:
  • Необходимо следить за базой auto-whitelist, потому как ее размер может серьезно вырасти за короткое время и это может в свою очередь влиять на использование ресурсов памяти процессом spamd. С помощью вспомогательного скрипта [2.8Кб] можно своевременно просматривать и очищать нежелательное содержимое базы.
  • В запускном скрипте демона spamd должна присутствовать опция --max-conn-per-child=N, которая ограничивает "время жизни" порожденных (child) процессов.
В дополнение:
По данному адресу расположены скрипты-утилиты, помогающие при работе с spamassassin'ом. Например, sa-stats.pl[33Кб] - вывод статистики по работе демона spamd на основании данных maillog.

Главное при использовании spamassassin'а при сканировании почтового трафика - не давать на проверку больших писем (>300Kb). Если это условие выполнено, то с большой уверенностью можно сказать, что утечки памяти не случится.

2006/10/06

jLibrary

jLibrary - еще одна открытая система управления документами (dms), которая заслуживает внимания. Имеет клиентскую и серверную реализацию, причем базу документов можно хранить как на удаленном сервере, так и на рабочем компьютере (в этом случае серверная часть не нужна).
Интерфейс для работы с репозитариями основан на eclipse, поэтому неважно какая операционная система используется, главное - наличие JavaRunTime (jlibrary целиком написана на Java)

Установка серверной части плохо документирована, но всё же:
1. Если есть работающий Tomcat, скачать WAR-архив, иначе можно взять jlibrary с уже подготовленным и настроенным Tomcat'ом. (данное описание охватывает процесс установки jlibrary из WAR-архива). Tomcat по-умолчанию автоматически разворачивает (deploy) war-архивы, помещенные в webapps-каталог. После того, как архив резвернут (в директорию webapps/jlibrary), лучше остановить Tomcat.

2. Внести необходимые изменения в конфигурационные файлы

%TOMCAT_HOME%/webapps/jlibrary/WEB-INF/web.xml


repository-home
/var/jlibrary


%TOMCAT_HOME%/webapps/jlibrary/server-config.wsdd

Создать файл %TOMCAT_HOME%/conf/jaas.config

Jackrabbit {
org.apache.jackrabbit.core.security.SimpleLoginModule required anonymousId="anonymous";
};

В запускной скрипт Tomcat добавить опции

JAVA_OPTS="-Xms128m -Xmx512m -Djava.security.auth.login.config=%TOMCAT_HOME%/conf/jaas.config"

3. Запустить(перезапустить) Tomcat.

Если не возникло критических ошибок при запуске серверной части, можно подсоединяться к серверу по адресу jlibrary://hostname:8080/jlibrary. (admin:changeme)