Що таке SquirrelMail?
SquirrelMail або Білка - це один з найбільш зручних і потужних Open Source пакетів веб-пошти, написаних на PHP. У ньому реалізована підтримка протоколів IMAP і SMTP і доступні багато модулі, що розширюють його функціональність, наприклад, ведення логів, фільтрація пошти на сервері, фільтрація спаму, календар, шифрування пошти за допомогою GPG та інше. SquirrelMail повністю русифікований. У даній статті наводяться короткі рекомендації по налаштуванню SquirrelMail для російськомовних користувачів, особливо корисні тим, хто хоче оновити свою установку з версії 1.2.х або 1.4.1 і нижче до більш свіжої версії (1.4.4 на момент написання статті). Починаючи з версії 1.4.2 SquirrelMail підтримує UTF-8 як кодування для російської мови за замовчуванням, а оскільки більшість російськомовних користувачів поки ще застосовують восьмібітних кодування KOI8-R або cp-1251, я розповім, як це оновлення зробити швидко і без втрат.
Оскільки SquirrelMail - це поштовий клієнт, для його роботи потрібні налаштовані сервери IMAP і SMTP. Для роботи з багатомовними файлами, а також для оптимізації сортування і пошуку сервер IMAP повинен підтримувати Unicode (наприклад, для Courier IMAP - це опція $ configure --enable-unicode). Природно, потрібен також веб-сервер з PHP4 (на момент написання статті з PHP5 версії нижче 5.0.3 можуть виникати проблеми через зміни в роботі з класами і об'єктами, а робота з 5.0.3 ще недостатньо протестована). Рекомендується, щоб в PHP були включені наступні опції (у вигляді вбудованих розширень або динамічно підвантажуваних (= shared) бібліотек):
$ ./configure - (ваші опції) \
--with-gettext --enable-mbstring = all --with-iconv --with-recode
а якщо збирати PHP в зовсім мінімалістичному варіанті, то так:
--enable-session --with-pcre-regex --with-gettext
Тим самим будуть включені підтримка сеансів і регулярних виразів. Підтримка gettext забезпечує використання функцій розширення gettext для російськомовного інтерфейсу і прискорює роботу в рази. Функції mbstring потрібні для роботи з російськомовними іменами папок IMAP на сервері (які згідно RFC-3501 повинні бути закодовані в UTF-7, з невеликими відхиленнями від власне UTF-7). Функції iconv або recode використовуються для перекодування тексту в розроблюваних cvs-версіях Білки, і їх можна включити з прицілом на майбутнє. Ніяких інших особливостей при складанні PHP немає.
Може знадобитися внести зміни в параметри php.ini - якщо вам приходить дуже багато пошти і вся вона зберігається на сервері, або якщо потрібно працювати з великими (> 2 МБ) листами та вкладеннями, то необхідно збільшити розмір пам'яті, дозволений для скрипта в php. ini (memory_limit) - з 8 МБ за замовчуванням до 16 МБ або більше. Для відправки листів з великими вкладеннями слід також збільшити максимальнодозволений розмір файлу, що завантажується на сервер (upload_max_filesize).
Дистрибутив SquirrelMail можна скачати за посиланням з сайту проекту. Можна взяти останню стабільну версію (1.4.4, рекомендується) у вигляді архіву або більш свіжу версію стабільної гілки з сайту або безпосередньо зі сховища cvs. Процедура установки з архіву і з образу cvs нічим не відрізняється.
Локалі для SquirrelMail 1.4.4
^ Первинна настройка SquirrelMail
Припустимо, що ми розпакували архіви або скопіювали cvs-образ і локалі в каталог sm-1.4.4ru. Заходимо в нього і починаємо працювати. Наше завдання - встановити Білку і налаштувати російськомовний інтерфейс. Для цього запускаємо в цьому каталозі.
# Chown nobody.nobody data
# Chown nobody.nobody attach
# Chmod 700 attach
1. DSN for Address Book. mysql: // squirreluser: pass @ localhost / sqmail
2. Table for Address Book. address
3. DSN for Preferences. mysql: // squirreluser: pass @ localhost / sqmail
4. Table for Preferences. userprefs
5. Field for username. user
6. Field for prefs key. prefkey
7. Field for prefs value. prefval
^ Доведення SquirrelMail і настройка російської мови
Питання 1 - Білка не відповідає.
Відповідь: щось не так налаштували. Перевірте, чи правильно ви налаштували веб-сервер і підтримку php.
^ Питання 2 - Білка відповідає не по-російськи, а по-англійськи.
Відповідь: не так налаштували мову.
Пояснення. Перевірте, чи правильно налаштована локаль. У Білки може бути два режими роботи з інтерфейсом, відмінним від англійського: з використанням функцій gettext і з використанням їх програмних замінників, якщо PHP зібраний без підтримки gettext. У другому режимі все працює без додаткового шаманства, але повільніше. Перший режим незрівнянно спритніше, але йому потрібно, щоб система підтримувала локаль, яка використовується для перекладу. Не всі дистрибутиви підтримують російську локаль UTF-8, тому це треба перевірити:
$ Locale -a | grep ru
і в разі відсутності в списку ru_RU.UTF-8 зібрати її самому:
# Localedef ru_RU.UTF-8 -i ru_RU -fUTF-8
$ Msgfmt squirrelmail.po -o squirrelmail.mo
В архіві є готові зібрані mo-файли для Білки і деяких модулів. Можливо, треба буде перезапустити веб-сервер.
знайти в файлі functions / i18n.php рядки:
$ Languages [ 'ru_RU'] [ 'NAME'] = 'Russian';
$ Languages [ 'ru_RU'] [ 'CHARSET'] = 'utf-8';
$ Languages [ 'ru_RU'] [ 'LOCALE'] = 'ru_RU.UTF-8';
$ Languages [ 'ru'] [ 'ALIAS'] = 'ru_RU';
і замінити їх на ту локаль, в якій ви хочете працювати, наприклад: $ Languages [ 'ru'] [ 'ALIAS'] = 'ru_RU';
змінити у файлі конфігурації default charset на KOI8-R.
^ Питання 4 - Що таке lossy encoding?
Відповідь: це опція перекодування листів (пункт 10-3), частина символів яких відсутня в поточній (8-бітної) кодуванні. Проблема полягає в тому, що при використанні восьмибітних кодувань можуть приходити листи, символи для яких принципово відсутні в KOI8-R, оскільки на їх місці стоять російські літери. Такі, наприклад, майже всі західноєвропейські "умляути". Залишається два варіанти: примусово вважати їх восьмібітного російськими символами, і тоді Sebastiàn перетворюється в СебастьЮна (SebastiЮn), або включити перекодування з втратами, щоб Sebastiàn відображався зі знаком питання на місці чужих символів (Sebasti? N). Вибирайте самі, що вам ближче, або працюйте в UTF-8 і забудьте про цю проблему раз і назавжди. До речі кажучи, для перекодування російських листів ця проблема не виникає, тому що всі букви cp-1251 взаємно однозначно відображаються в букви KOI8-R. Білка це знає і перекодовує російські листи правильно при будь-системної кодуванні.
^ Питання 5 - Як зробити, щоб імена папок відображалися по-російськи?
Відповідає Tomas Kuliavas. Для звичайних папок (НЕ службових, тобто не INBOX, Sent, Trash і Drafts) досить зібрати PHP з підтримкою mbstring, як описано вище. Імена службових папок слід задати у файлі конфігурації Білки в UTF-7. Знайдіть там такі змінні:
$ Trash_folder = 'INBOX.Trash';
$ Sent_folder = 'INBOX.Sent';
$ Draft_folder = 'INBOX.Drafts';
і замініть їх на: тобто на російські назви Кошик, Надіслані і Чернетки в UTF7-IMAP. Для бажаючих: "Вхідні" в цьому кодуванні пишеться як BBIERQQ + BDQETwRJBDgENQ-.
^ Питання 6 - Чи можна використовувати Russian Apache?
Відповідає Tomas Kuliavas: можна, але не рекомендується. Для того щоб російська апач не псував кодування Білки, необхідно відключити функції перетворення кодувань. Опція CharsetDefault псує кодування, що відправляються Білкою, і перекодовує сам текст.
^ Налаштування модуля шифрування GPG для SquirrelMail