roundcube 1.6.1にプラグインを追加する

右クリックでメニューを表示する(contextmenu)

まず、ソースコードをダウンロードする。今回は3.3.1のバージョンを利用する。

% cd /tmp
% wget https://github.com/johndoh/roundcube-contextmenu/archive/refs/tags/3.3.1.tar.gz
% tar xvfz 3.3.1.tar.gz
% sudo mv roundcube-contextmenu-3.3.1 /var/lib/roundcube/plugins/contextmenu
% cd /var/lib/roundcube/config

roundcubeにプラグインを追加する。/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
];

サーバサイドのメールフィルター機能(managesieve)

roundcube 1.6.1では/var/lib/roundcube/plugins/にmanagesieveが標準でインストールされている。Install Roundcube Webmail on Debian 11/10 with Apache/Nginxを参考に設定する。

必要なソフトウェアをインストールする。

% sudo apt install dovecot-sieve dovecot-managesieved dovecot-lmtpd

dovecot、postfix、roundcubeの各設定ファイルを編集する。

まず、dovecotの設定ファイルを設定する。

% cd /etc/dovecot/conf.d/
% sudo vi 10-master.conf

該当部分を以下のように書き換える。

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0666
    user = postfix
  }

  # Create inet listener only if you can't use the above UNIX socket
  #inet_listener lmtp {
    # Avoid making LMTP visible for the entire internet
    #address =
    #port = 
  #}
}

引き続き15-lda.confを編集する。

% sudo cp -p 15-lda.conf 15-lda.conf.org
% sudo vi 15-lda.conf

編集結果は以下の通り。

% diff 15-lda.conf.org 15-lda.conf
47c47
<   #mail_plugins = $mail_plugins
---
>   mail_plugins = $mail_plugins sieve

引き続き15-lda.confを編集する。

% sudo cp -p 20-lmtp.conf 20-lmtp.conf.org
% sudo vi 20-lmtp.conf

編集結果は以下の通り。

% diff 20-lmtp.conf.org 20-lmtp.conf
39c39
<   #mail_plugins = $mail_plugins
---
>   mail_plugins = quota sieve

/etc/postfix/main.cf を編集する。

% cd /etc/postfix
% sudo vi main.cf

以下を追加する。

## For mangesieve on roundcube
mailbox_transport = lmtp:unix:private/dovecot-lmtp
mailbox_command = /usr/lib/dovecot/deliver -f "$SENDER" -a "$RECIPIENT"
smtputf8_enable = no

このままだと以下のようなエラーがでて、ローカルユーザにメールが配信されない。期待しているのはUSERNAME@DOMAINの@の前の「USERNAME」をユーザ名と解釈してくれることであるが、USERNAME@DOMAINをユーザ名と解釈し、エラーが発生している。

Mar ZZ 12:06:24 hogehoge postfix/lmtp[2522238]: 511866E1031: to=<USERNAME@DOMAIN>, relay=hogehoge.fugafuga.jp[private/dovecot-lmtp], delay=0.18, delays=0.14/0/0/0.04, dsn=5.1.1, status=bounced (host hogehoge.fugafuga.jp[private/dovecot-lmtp] said: 550 5.1.1 <USERNAME@DOMAIN> User doesn't exist: USERNAME@DOMAIN (in reply to RCPT TO command))

/etc/dovecot/conf.d/10-auth.confのauth_username_formatを以下のように編集する(参考:email - Postfix → Dovecot LMTP: User does not exist: uid@domain - Server Fault)。

#auth_username_format = %Lu
auth_username_format = %Ln

dovecot と postfixを再起動する。

% sudo systemctl restart dovecot postfix

roundcubeにプラグインを追加する。/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
    'managesieve',
];

指定した行より多い引用を隠す(hide_blockquote)

標準で添付されている。roundcubeにプラグインを追加する。/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
    'managesieve',
    'hide_blockquote',
];

添付ファイルの一時置き場の指定(filesystem_attachements)

/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
    'managesieve',
    'hide_blockquote',
    'filesystem_attachements',
];

ヘルプ(help)

/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
    'managesieve',
    'hide_blockquote',
    'filesystem_attachements',
    'help',
];

Google Authenticatorを使った2要素認証(twofactor_gauthenticator)

GitHub - alexandregz/twofactor_gauthenticator: This RoundCube plugin adds the 2-step verification(OTP) to the login proccessを利用して、2要素認証(2FA)をできるようにする。

% cd /tmp
% git clone git clone https://github.com/camilord/twofactor_gauthenticator.git
% sudo mv twofactor_gauthenticator /var/lib/roundcube/plugins
% cd /var/lib/roundcube/plugins/ twofactor_gauthenticator
% sudo cp -p config.inc.php.dist config.inc.php

/var/lib/roundcube/config/config.inc.phpにプラグインを追加する。

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
    'contextmenu',
    'managesieve',
    'hide_blockquote',
    'filesystem_attachements',
    'help',
    'twofactor_gauthenticator',
];

Two Factor Authentication

有料だけれども、TOTP(Google Authenticatorなどのワンタイムパスワードアプリ)、E-Mailによる2要素認証が行える。