Часть 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/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 (....
https://linux-notes.org/ustanovka-dovecot-iz-portov-vo-freebsd
https://www.lissyara.su/articles/freebsd/www/apache2+php5+mod_fastcgi
https://www.lissyara.su/articles/freebsd/mail/exim+dovecot+postfixadmin