./configure --with-ldap --with-pam --with-sql --with-solr --with-pgsql --with-sqlite --with-mysql --with-lua
そこで依存関係をdnfでインストールします。Luaはオプションもいずれ使うだろうし、lua-*で全部入れておきます。
dnf install openldap-devel pam-devel expat-devel libpq-devel mariadb-connector-c-devel sqlite-devel lua lua-*
dnf install lua-devel --enablerepo=crb
tar xzf dovecot-2.3.20.tar.gz
cd dovecot-2.3.20/
./configure --with-ldap --with-pam --with-sql --with-solr --with-pgsql --with-sqlite --with-mysql --with-lua
make
make install
# サンプルをコピーするなら
cp -r /usr/local/share/doc/dovecot/example-config/* /usr/local/etc/dovecot/
# すでに動いている/etc/dovecotからコピーするなら
cp -r /etc/dovecot/* /usr/local/etc/dovecot/
mail_plugins = $mail_plugins quota mail_lua notify push_notification push_notification_lua
plugin {
push_notification_driver = lua:file=/home/vmb/dovecot-push.lua
push_notification_driver2 = dlog
}
virtualドメインのユーザはvmbで動かしているので、/home/vmbに取り合えずluaファイルを(実行権限を付けて)置きます。
#!/usr/bin/lua
os.execute("/usr/bin/php /home/vmb/dovecot-push.php");
Luaの使えない私は、PHPを呼び出して動くかどうかを見ます。
<?php
$str = print_r($_SERVER, 1);
file_put_contents(__DIR__."/push.log", $str, LOCK_EX);
echo $str;
ここでdovecotを起動・またはリロードします。
# 起動
/usr/local/sbin/dovecot
# リロード
/usr/local/sbin/dovecot reload
RoundCubeでフォルダの購読をオンオフ等してみて、/home/vmb/push.logが出来れば取り合えず動いている事が確認出来ます。出力は以下のようになりました。
Array
(
[PROCESS_MIN_AVAIL] => 0
[DOVECOT_CHILD_PROCESS] => 1
[SOCKET0_SETTINGS] => imap
[SOCKET_COUNT] => 2
[LOG_DEBUG] =>
[STATS_WRITER_SOCKET_PATH] => /usr/local/var/run/dovecot/stats-writer
[CONFIG_FILE] => /usr/local/var/run/dovecot/config
[PWD] => /var/spool/mail/vhosts/virtual.localdomain/aikawa
[LOG_SERVICE] => 1
[SERVICE_COUNT] => 1
[GENERATION] => 35
[PROCESS_LIMIT] => 1024
[SERVICE_NAME] => imap
[DOVECOT_HOSTDOMAIN] => localhost
[CLIENT_LIMIT] => 1
[IDLE_KILL] => 60
[RESTRICT_SETEXTRAGROUPS] => 97
[DOVECOT_HOSTNAME] => localhost.localdomain
[SHLVL] => 0
[DOVECOT_VERSION] => 2.3.20
[SOCKET1_SETTINGS] => imap-master
[DOVECOT_PRESERVE_ENVS] => TZ CORE_OUTOFMEM CORE_ERROR
[_] => /usr/bin/php
[PHP_SELF] => /home/vmb/dovecot-push.php
[SCRIPT_NAME] => /home/vmb/dovecot-push.php
[SCRIPT_FILENAME] => /home/vmb/dovecot-push.php
[PATH_TRANSLATED] => /home/vmb/dovecot-push.php
[DOCUMENT_ROOT] =>
[REQUEST_TIME_FLOAT] => 1674196790.2264
[REQUEST_TIME] => 1674196790
[argv] => Array
(
[0] => /home/vmb/dovecot-push.php
)
[argc] => 1
)
Tags: Dovecot