roundcube Roundcube – это web-интерфейс или, если хотите, почтовый клиент, написанный на PHP. Roundcube сочетает в себе приятность дизайна интерфейса и удобство, которое проявляется даже в мелочах, например письма можно перемещать между папками простым перетаскиванием. Из всех известных мне web-интерфейсов на сегодняшний день Roundcube является наиболее красивым и удобным, а к тому же еще и бесплатным. Для работы Roundcube нам потребуется web-сервер Apache, который мы уже установили, а также сервер баз данных MySQL, тоже установленный ранее. В MySQL базе Roundcube будет сохранять настройки пользователей, адресные книги, автоматически добавляемые подписи к сообщениям и т.д.

Начнем с установки Roundcube:

# cd /usr/ports/mail/roundcube
# make config

Отмечаем следующие опции:

[X] MYSQL       Use MySQL backend

Собираем порт:

# make install clean

Создадим базу данных MySQL:

# mysql
mysql> create database roundcube;
mysql> grant all on roundcube.* to 'roundcube'@'localhost' identified by 'roundcube';
mysql> flush privileges;
mysql> quit

Теперь займемся настройкой web-сервера apache для нашего Roundcube. Для скриптов roundcube мы выделим отдельную площадку. Для этих целей создадим пользователя и домашнюю директорию с деревом каталогов под виртуалхост, установим соответствующие права:

# pw useradd roundcube -g www -s “/sbin/nologin” -c “Roundcube”
# mkdir /home/roundcube
# mkdir /home/roundcube/tmp
# mkdir /home/roundcube/webmail.example.com
# chmod -R 770 /home/roundcube

Создадим конфигурационный файл виртуалхоста:

# touch /usr/local/etc/apache/vhosts/roundcube.conf

И отредактируем его:

<Virtualhost>
ServerName webmail.example.com
ServerAdmin [email protected]
DocumentRoot "/home/roundcube/webmail.example.com"

# Поскольку roundcube написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess'ом
<Directory "/home/roundcube/webmail.example.com">
Options -ExecCGI
AllowOverride None
</Directory>
# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /home/roundcube
php_admin_value safe_mode_include_dir /home/roundcube
php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /home/roundcube
php_admin_value upload_tmp_dir /home/roundcube/tmp
php_admin_value session.save_path /home/roundcube/tmp

# Логирование
ErrorLog /var/log/httpd/roundcube-error.log
TransferLog /var/log/httpd/roundcube-access.log
</Virtualhost>

Перезапускаем apache, чтобы изменения вступили в силу:

# apachectl restart

После установки скрипты Roundcube появились в директории /usr/local/www/roundcube. Скопируем их в директорию, где будет размещаться наш VirtualHost и зададим владельца:

# cp -R /usr/local/www/roundcube/* /home/roundcube/webmail.example.com/
# chown -R roundcube:www /home/roundcube

Заполняем базу данных:

# mysql roundcube < /home/roundcube/webmail.example.com/SQL/mysql.initial.sql

Переходим к настройке Roundcube. Отредактируем файл /home/roundcube/webmail.example.com/config/db.inc.php:

$rcmail_config = array();
$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';
$rcmail_config['db_dsnr'] = '';
$rcmail_config['db_max_length'] = 512000;  // 500K
$rcmail_config['db_persistent'] = FALSE;
$rcmail_config['db_table_users'] = 'users';
$rcmail_config['db_table_identities'] = 'identities';
$rcmail_config['db_table_contacts'] = 'contacts';
$rcmail_config['db_table_session'] = 'session';
$rcmail_config['db_table_cache'] = 'cache';
$rcmail_config['db_table_messages'] = 'messages';
$rcmail_config['db_sequence_users'] = 'user_ids';
$rcmail_config['db_sequence_identities'] = 'identity_ids';
$rcmail_config['db_sequence_contacts'] = 'contact_ids';
$rcmail_config['db_sequence_cache'] = 'cache_ids';
$rcmail_config['db_sequence_messages'] = 'message_ids';

Теперь отредактируем файл /home/roundcube/webmail.example.com/config/main.inc.php:

 $rcmail_config = array();
$rcmail_config['debug_level'] = 1;
$rcmail_config['enable_caching'] = TRUE;
$rcmail_config['message_cache_lifetime'] = '10d';
$rcmail_config['auto_create_user'] = TRUE;
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143;
$rcmail_config['username_domain'] = '';
$rcmail_config['mail_domain'] = '';
$rcmail_config['virtuser_file'] = '';
$rcmail_config['virtuser_query'] = '';
$rcmail_config['smtp_server'] = '';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_helo_host'] = '';
$rcmail_config['smtp_log'] = TRUE;
$rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size');
$rcmail_config['skin_path'] = 'mvision';
$rcmail_config['skin_include_php'] = FALSE;
$rcmail_config['temp_dir'] = 'temp/';
$rcmail_config['log_dir'] = 'logs/';
$rcmail_config['session_lifetime'] = 10;
$rcmail_config['ip_check'] = false;
$rcmail_config['double_auth'] = false;
$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';
$rcmail_config['locale_string'] = 'ru';
$rcmail_config['date_short'] = 'D H:i';
$rcmail_config['date_long'] = 'd.m.Y H:i';
$rcmail_config['date_today'] = 'H:i';
$rcmail_config['useragent'] = 'RoundCube Webmail/0.1';
$rcmail_config['product_name'] = 'RoundCube Webmail';
$rcmail_config['imap_root'] = '';
$rcmail_config['drafts_mbox'] = 'Drafts';
$rcmail_config['junk_mbox'] = 'Junk';
$rcmail_config['sent_mbox'] = 'Sent';
$rcmail_config['trash_mbox'] = 'Trash';
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
$rcmail_config['create_default_folders'] = TRUE;
$rcmail_config['protect_default_folders'] = TRUE;
$rcmail_config['skip_deleted'] = FALSE;
$rcmail_config['read_when_deleted'] = TRUE;
$rcmail_config['flag_for_deletion'] = FALSE;
$rcmail_config['enable_spellcheck'] = TRUE;
$rcmail_config['spellcheck_uri'] = '';
$rcmail_config['spellcheck_languages'] = NULL;
$rcmail_config['generic_message_footer'] = '';
$rcmail_config['mail_header_delimiter'] = NULL;
$rcmail_config['dont_override'] = array();
$rcmail_config['javascript_config'] = array('read_when_deleted', 'flag_for_deletion');
$rcmail_config['include_host_config'] = FALSE;

/***** these settings can be overwritten by user's preferences *****/
$rcmail_config['pagesize'] = 40;
$rcmail_config['timezone'] = intval(date('O'))/100 - date('I');
$rcmail_config['dst_active'] = (bool)date('I');
$rcmail_config['prefer_html'] = TRUE;
$rcmail_config['htmleditor'] = TRUE;
$rcmail_config['prettydate'] = TRUE;
$rcmail_config['message_sort_col'] = 'date';
$rcmail_config['message_sort_order'] = 'DESC';
$rcmail_config['draft_autosave'] = 300;
$rcmail_config['max_pagesize'] = 200;
$rcmail_config['preview_pane'] = TRUE;

RoundCube установлен и готов к работе.