2025-06-18

Часть 01. Apache24, PostfixAdmin33-php84, phpLiteAdmin

Часть программ (apache24, postfixadmin33-php84) устанавливаются сразу из пакетов

bsd$ sudo pkg install -y apache24

bsd$ sudo pkg install -y postfixadmin33-php84

FreeBSD по умолчанию устанавливает сайты в /usr/local/www, но postfixadmin требует доступ на запись для директории ../postfixadmin/templates_c, поэтому сайты лучше разместить в /var/www (SQLite также сможет хранить свои базы данных в /var/www/db/...)

bsd$ sudo mv /usr/local/www/* /var/www/


Вообще, пока остановился на том, что устанавливать содержимое сайтов логичнее в /var/www (по иерархии фаловой системы каталог /usr/local не предполагает хранение изменяемых данных и в некоторых случаях монтируется только для чтения)

Избежать путаницы с путями поможет создание символьной ссылки на директорию с файлами сайтов. Далее, в файлах настроек необходимо указывать путь по ссылке, например DocumentRoot "/www/postfixadmin/"


bsd$ sudo ln -s /var/www /www

bsd$ sudo chmod 0775 /www/postfixadmin/templates_c/

postfixadmin33-php84 автоматом подтянет зависимости, остальное потребуется установить самостоятельно:

bsd$ sudo pkg install -y mod_php84-8.4.5

bsd$ sudo pkg install -y php84-sqlite3-8.4.5

phpLiteAdmin что в пакетах, что в портах на этот момент присутствует только для PHP-8.3. Поэтому версию, подправленную под PHP-8.4, придется распаковывать самостоятельно

bsd$ cd /www && sudo 7z x phpliteadmin.v1.9.8.2-patched.zip

bsd$ cd /www/phpliteadmin && sudo ln -s ./phpliteadmin.php ./index.php

Перед запуском необходимо сконфигурировать некоторые параметры phpLiteAdmin (указать путь к базе, отключить шифрование паролей и т.п.)

bsd$ sudo vi /usr/local/etc/exim/configure

$CONF['database_name'] = '/www/db/exim/exim.sqlite';

$CONF['encrypt'] = 'cleartext';

$CONF['configured'] = true;


При первом запуске будут созданы/обновлены все необходимые таблицы базы данных

Также необходимо получить хэш для setup password и прописать этот хэш в config.local.php


http://postfixadmin.stecs.ru/setup.php

Часть 02. EXperimental Internet Mailer (EXIM)

Exim и dovecot придется собирать из портов (см. обновление коллекции портов), т.к. по умолчанию у обоих нет поддержки SQLITE

bsd$ sudo make -C /usr/pors/mail/exim -D BATCH config install clean

bsd$ sudo make -C /usr/pors/mail/dovecot -D BATCH config install clean


При сборке exim постоянно были проблемы с нехваткой памяти на виртуалке при компиляции cmake-core, поэтому после успешной сборки портов, сохранил собранные (подробнее здесь) бинарные пакеты: exim-4.98.2-sqlite3.pkg, dovecot-2.3.21.1_2-sqlite3.pkg


bsd$ sudo pkg create -o /usr/ports/distfiles/exim/ exim

Creating package for exim-4.98.2

bsd$ sudo pkg create -o /usr/ports/distfiles/ dovecot

Creating package for dovecot-2.3.21.1_2

Необходимо выполнить отключение встроенного в систему sendmail

bsd$ sudo /etc/rc.d/sendmail forcestop

bsd$ grep sendmail /etc/rc.conf

sendmail_enable="NONE"

bsd$ cat /etc/mail/mailer.conf

sendmail/usr/local/sbin/exim
send-mail/usr/local/sbin/exim
mailq/usr/local/sbin/exim -bp
newaliases/usr/local/sbin/exim -bi
hoststat/usr/local/sbin/exim
purgestat/usr/local/sbin/exim

Далее необходимо настроить /usr/local/etc/exim/configure


Часть 03. Dovecot

Dovecot с поддержкой SQLite, как и Exim, придется собирать из портов

Листинг dovecot-sqlite.conf (скачать)


 

driver

= sqlite

connect

= /www/db/exim/exim.sqlite

 

default_pass_scheme

= PLAIN

 

password_query

= \

 

 SELECT username AS user, password \

 

 FROM mailbox WHERE username = '%n@%d' AND active='1'

 

user_query

= \

 

 SELECT CONCAT('/var/mail/exim/',maildir) AS home, 26 AS uid, 26 AS gid \

 

 FROM mailbox WHERE username = '%n@%d' AND active = '1'

 

dovecot: Error: Relative home directory paths not supported (....


mx.stecs.ru FreeBSD 14.2-RELEASE GENERIC amd64 Sun Apr 6 04:10:59 UTC 2025