вторник, 1 мая 2012 г.

Виртуальные домены на sendmail+cyrus-imap

В sendmail.mc пишем:
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`confLOCAL_MAILER', `cyrusv2')
mailer(`cyrusv2')

После компиляции в sendmail.cf надо внести изменения в разделе про cyrus (@todo: сделать это sendmail.mc):
S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,

В mailertable для каждого домена:
example.com cyrusv2:/var/imap/socket/lmtp

В access:
From:example.com RELAY

В imapd.conf:
defaultdomain: example.com
unixhierarchysep: 1
virtdomains: userid
admins: admin
tls_cert_file: /var/imap/server.pem
tls_key_file: /var/imap/server.pem


Пользователь admin будет управлять всеми ящиками на всех доменах. Если надо админа для конкретного домена, то пишем так:
admins: admin, admin@example2.com

Создаем сертификат и ключи:
openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 365
Когда спросят про "Common Name (eg, YOUR name)" нужно ввести имя того же домена, который прописан в defaultdomain (здесь - example.com).

Прописываем для админа пароль:
saslpasswd2 -c admin@example.com

И начинаем создавать ящики:
cyradm --user admin@example.com example.com
cm user/user1@example.com
cm user/user1@example2.com

Пароли для них так же прописываются через saslpasswd2:
saslpasswd2 -c user1@example.com
saslpasswd2 -c user1@example2.com

Источники:
http://cyrusimap.web.cmu.edu/docs/cyrus-imapd/2.3.16/install-configure.php
http://cyrusimap.web.cmu.edu/docs/cyrus-imapd/2.3.16/install-virtdomains.php
http://cyrusimap.web.cmu.edu/mediawiki/index.php/Cyrus_Virtual_Domains

четверг, 12 апреля 2012 г.

php 5.2 и php 5.3 на одном сервере (FreeBSD)

Для обеспечения работоспособности php 5.2 и php 5.3 на одном сервере можно сделать следующее:

1. убедится, что php 5.2 и его расширения установлены из портов php52 и php52-extensions соответственно.

2. make -C /usr/ports/lang/php5/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install

3. make -C /usr/ports/lang/php5-extensions/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install

на этом шаге могут возникнуть проблемы с портами, которые не были еще установлены в систему и поставились по зависимостям модулей: из-за указания PREFIX они тоже поставятся в /usr/local/php53, но нам этого не надо, поэтому:

pkg_delete <проблемный порт>

make -C /usr/ports/<категория>/<проблемный порт> install

и повторяем пункт 3.



Настройка Apache

php 5.2 оставлен модулем, а php 5.3 будет работать через cgi.

1. добавляем:

ScriptAlias /php53/ “/usr/local/php53/bin/”

<Directory “/usr/local/php53/bin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

2. для виртуальных хостов, которым требуется php 5.3 разрешаем переписывать FileInfo:

AllowOverride FileInfo

3. в документруте сайта в .htaccess надо добавить:

AddHandler php53 .php
Action php53 /cgi-bin/php53-cgi

4. копируем:

cp /usr/local/php53/bin/php-cgi ~<user>/cgi-bin/php53-cgi

Все пункты, кроме п.1, необходимы если используется suexec. Если же suexec не используется, то берем пп.1, 2, а 3 будет таким:

AddHandler php53 .php
Action php53 /php53/php-cgi



Примечание

В режиме cgi php не читает php.ini из домашнего каталога пользователя. Есть два способа решения:

1. сделать линк на пользовательский php.ini в каталоге cgi-bin:

cd ~/cgi-bin

ln -s ../php.ini

2. в php 5.3 появилась поддержка изменения настроек для каждого отдельного каталога путем размещения в них файла .user.ini