BitlBee – гейт из IRC в Jabber, ICQ, AOL, MSN, etc.

BitlBee – демон, который выполняет роль гейта из IRC в другие популярные IM протоколы. Установил у себя локально, в качестве гейта в Jabber. В качестве IRC-клиента использовал мною любимый консольный WeeChat. Вполне удобно.
Работает сия штука следующим образом: из любимого IRC-клиента подключаемся к BitlBee (в моем случае это localhost на стандартном для IRC порте). Бот по имени root проведет с вами краткий инструктаж, которого будет более чем достаточно для начала работы.
Кол-во аккаунтов не ограничено, общаться можно прямо на канале, предваряя текст сообщения именем контакта, которому отправляете сообщение (это сообщение увидит только он). Или можно открыть отдельное окно для этого контакта, BitlBee запомнит это и будет адресовать соответствующие сообщения в нужное окно. Для каждого контакта (окна) можно указать свою собственную кодировку.
Одним словом, любителям IRC будет привычно и удобно.

Jabber2 и MU-Conference

Для установки MU-Conference на Jabber2 пришлось немножко повозиться.
Итак, качаем версию MU-Conference не ниже 0.7.
В качестве мануала по компиляции и настройке использовал статью Multi User Conferencing (MU-Conference) for Jabberd2.

Создаем директорию для “комнат” – mkdir -p /var/spool/jabber/rooms/.
Соответствующим образом исправляем дефольтный конфиг. У меня он получился таким (показан не весь конфиг, а только изменения):

  <name>muclinker</name>
  <host>rooms.domain.tld</host>
  <ip>domain.tld</ip>
  <port>5347</port>
  <secret>secret_password</secret> <!-- пароль, прописанный в /etc/jabber/router.xml -->

  <spool>/var/spool/jabber/rooms</spool>
  <logdir>/var/log/jabber</logdir>
  <pidfile>/var/run/jabber/mu-conference.pid</pidfile>

      <sadmin>
        <user>admin@domain.tld</user> <!-- задаем список админов (по одному на строчку) -->
      </sadmin>

  <roomlock/> <!-- запрещаем создание комнаты всем, кроме админа -->

В файле /etc/jabber/router.xml прописываем следующую строчку (внутри ):

<alias name='rooms.domain.tld' target='muclinker'/>

Остальное как написано в мануале.

postfix и php mail()

Если в качестве MTA используется postfix, то строки хидера нужно завершать \n, а не \r\n. Примерно так:

$sHeaders = “From: \”NAME\” <EMAIL>\n” .
‘X-Mailer: Support form (PHP/’ . phpversion() . “)\n” .
“MIME-Version: 1.0\n” .
“Content-Type: text/plain; charset=utf-8\n” .
“Content-Transfer-Encoding: 8bit\n\n“;
mail(“e-mail@domain.tld”, Subject, MsgBody, $sHeaders);

Sypex Dumper Lite

Переезжая с одного сервера на другой пришлось переносить и базы данных. Ни одна из программ и утилит не могла справиться с большими базами и с кодировками отличными от UTF-8. Случайно нашел Sypex Dumper – это незаменимый скрипт для переноса и бэкапа!
Теперь все мои базы переведены в UTF-8 – никаких проблем с кодировками.

Свой Jabber

Решился поставить свой собственный Jabber-сервер. Оказалось, что это достаточно просто.
В качестве Jabber-сервера был выбран Jabberd второй версии.
В качестве ICQ-транспорта был выбран JIT.
Статья Jabberd2 Server Setup содержит несколько малозначительных ошибок, которые не мешают процессу настройки сервера.

Всю настройку выполнял согласно статьям:

На данный момент есть нерешенные проблемы:

  1. Запрет регистрации нового пользователя – хочу сам решать, кому регистрироваться. Решение нашлось на сайте сервера. И инструкция по добавлению пользователя.
  2. Не смог настроить Client-Server SSL – в логе получаю ошибку “failed to load local SSL pemfile, SSL will not be available to clients”. Ну вот, разобрался с SSL. Сертификат сгенерил как описано в инструкции Generating a Self-Signed SSL Certificate. В конфигах /etc/jabber/c2s.xml и /etc/jabber/s2s.xml прописал путь к файлу server.pem и сказал слушать порт 5223.
  3. Не нашел, как можно заставить сервер сохранять в vCard аватару пользователя.

UPD: Понадобилось мне добавить поддержку еще одного домена, пошел читать родной мануал. Из него понял, что поддержку дополнительного домена сделать можно, но как не сказано. Погуглив, нашел пошаговую инструкцию – Setting up extra realms (domains). Все просто, теперь у меня поддерживается два домена.

UPD2: После перехода на версию 2.1.6 добавил несколько полей в базу jabber2 в таблице vcard – теперь аватара сохраняется. Имена полей и типы взял из архива с сорцами jabberd2, из файла mysql.sql.

Настройка почтового сервера

Отличная инструкция по установке и настройке почтового сервера на основе Postfix.
А так же дополнение – Установка Postfix Admin.

Установка squirrelmail

squirrelmail – это веб-интерфейс для доступа к почтовым ящикам пользователей. Весьма настраеваемый, мультиязычный, с поддержкой тем. Тему и язык ользователь может настроить индивидуально.

# emerge squirrelmail
# webapp-config -I -h -d desired_directory_on_server squirrelmail 1.4.9a

UPD (13.08.2007):
Еще полезная ссылка – Настройка SSL для SMTP-сервера postfix (FreeBSD).

UPD (13.09.2009):
И еще одна ОЧЕНЬ полезная ссылка –
Настройка почтового сервера (Postfix, Dovecot, DSpam, SQLGrey, DomainKeys, SPF).

DBMail

DBMail – почтовый сервер. Основное отличие от других серверов в том что все данные хранятся в SQL базе данных. На данный момент поддерживаются MySQL, PostgreSQL, SQLite. В версии 2.2 появилась LDAP аутентификация, работа с Sieved (фильтры почты). Также обещано увеличение производительности за счет выноса некоторых заголовков в отдельные поля базы данных и их индексации.

Мне думается, что вкупе с базой PostgreSQL и Postfix MTA может получиться хорошее решение.
Достоинство DBMail в том, что доступа к файловой системе пользователь не имеет, недежность зависит от надежности базы данных. Ну и индексирование писем в базе данных весьма важно, особенно для тех, кто использует протокол IMAP.

Настройка FTP

На форуме Gentoo есть ветка в которой обсуждается установка и настройка FTP сервера на примере VSFTPD.

Как бы мне в PROFTPD сделать возможность использования НЕ системного аккаунтинга? Совершенно нет желания заводить в системе дополнительных пользователей только ради не анонимного доступа к ftp-серверу.