PHPackages                             bukowski/vacation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. bukowski/vacation

ActiveRoundcube-plugin[Utility &amp; Helpers](/categories/utility)

bukowski/vacation
=================

Vacation, out-of-office and forward feature for Roundcube

11882↓50%12PHP

Since Dec 31Pushed 4mo ago4 watchersCompare

[ Source](https://github.com/bukowski12/roundcube-vacation-plugin)[ Packagist](https://packagist.org/packages/bukowski/vacation)[ RSS](/packages/bukowski-vacation/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

roundcube-vacation-2.x
======================

[](#roundcube-vacation-2x)

- vacation / out-of-office plugin for RoundCube
- elastic skin support

About
-----

[](#about)

The vacation plugin allows mail to be forwarded and/or auto-replied with a custom subject / message body. Note that the actual auto-reply is done by a program such as /usr/bin/vacation , the virtual user aware vacation.pl or a Sieve script.

Features
--------

[](#features)

The following combination of features is supported for end-users:

- keep a local copy of the mail
- forward the mail to another e-mail address
- send an out of office reply with custom subject &amp; message body
- enable auto-reply for aliases (all drivers except for SQL)

An administrator can configure the following options:

- Support for default subject and body.
- Per host config + driver and ability to disable 'Vacation' tab on a per-host basis

Licensing
---------

[](#licensing)

This product is distributed under the GPL. Please read through the file LICENSE in Roundcube's root directory for more information about the license.

Available drivers
-----------------

[](#available-drivers)

The following drivers are available to do the low level work:

- Sieve. This driver uses ManagedSieve to set/get the Sieve script for sending mail.
- FTP. This driver uploads the .forward file to the user's homedirectory.
- SSHFTP. This driver uses SSH to upload .forward file to the user's homedirectory.
- Setuid. This driver places the .forward file in the user's homedirectory using the squirrel setuid binary.
- SQL. This driver creates entries in the vacation table in a MySQL database and modifies the alias table. At the moment the SQL driver is tailored towards Postfix with either MySQL or PostgreSQL but can be modified to suit other configurations.
- None. This driver disables the Vacation tab for hosts that do not support Out of office replies.

More on each driver below:

FTP Driver
----------

[](#ftp-driver)

The FTP driver establishes an FTP-connection to the current IMAP-host or the server specified in config.ini The login credentials of the current user are used to login to the FTP-server.

If .forward exists and it contains /usr/bin/vacation (as specified in config.ini), the out of office is enabled.

If there are any forwarding addresses found in .forward, these are displayed to the user.

If alias\_identities = true and there are any aliases found in .forward, these are displayed to the user. If alias\_identities = true and there are no aliases found in .forward, the identities are loaded and shown.

An alias contains no domain as it's limited to normal system users (/etc/passwd). If there is more than one identity present, the button 'Get aliases' is shown.

In either case it then downloads the .vacation.msg file that contains both message body and subject. If .vacation.msg cannot be found, it uses the default body and subject as defined in 'config.ini'.

Requirements for using this driver:

- A working FTP-server that allows users to login to their $HOME directory.
- The SMTP-server must use .forward files found in the $HOME directory
- The FTP-server must allow upload of dot-files. Pure-ftpd does not allow this by default

SSHFTP Driver
-------------

[](#sshftp-driver)

The SSHFTP backend uses SSH to establish a secure connection to the current IMAP-host or the server specified in config.ini It then uses the SFTP subsystem to read and write files. The SSHFTP behaves just like the FTP driver.

Requirements for using this driver:

- Requires PECL package to be installed. See
- The SMTP-server must use .forward files in the $HOME directory

Sieve driver
------------

[](#sieve-driver)

TBD

Setuid Driver
-------------

[](#setuid-driver)

The setuid backend uses a setuid binary to read/write .forward,.vacation.msg files for the current logged in user. Apache executes the setuid binary and passes the user credentials as parameters.

The extra/vacation\_binary/ directory of the plugin contains the setuid binary and its source code. To install this driver, change directory to $path/to/extra/vacation\_binary and issue with root priviliges the command: "make install".

This command install "squirrel\_vacation\_proxy" to /usr/bin with the setuid bit set. This directory can be changed in config.mk

Apart from the way it reads/writes files, it behaves like the FTP driver.

Requirements for using this driver:

- The Apache user needs to be 'apache' or you need to edit config.mk and recompile squirrelmail\_vacation\_proxy using 'make'.

Requirement for using .forward files
------------------------------------

[](#requirement-for-using-forward-files)

The SSHFTP, FTP and setuid backend all use .forward files. See config.ini for available options, like enabling identities, keeping copies etc.

If you want to use one of these drivers, please note:

- The /usr/bin/binary must create .vacation.db when it is missing.
- Upgrade to vacation 1.2.7.0 as earlier versions have a bug that cause vacation to crash when .vacation.db is missing.

Virtual/SQL Driver
------------------

[](#virtualsql-driver)

The Virtual/SQL driver is the most advanced driver but tailored to be used with Postfix. This is how it works:

If the vacation box gets checked by the end-user a new virtual alias will be created in the designated table as joe@The 'vacation.domain.org' part is configered in config.ini (see also INSTALL.TXT) as well as /etc/postfix/master.cf

 is passed as a for the 'vacation.pl' script that is associated with 'vacation.domain.org' transport. This vacation.pl fetches the mail body and subject from the database and constructs a new mail.

The code is tested with a Postfix/MySQL setup based on the tutorials at It supports either normalized tables (domain\_id) or non-normalized tables (domainname). Please see config.ini for options.

While the driver should be able to work with different database schemes,for the vacation table layout it relies on the schema which can be found in the extra/virtual\_vacation directory.

Installation instructions are provided by the Postfixadmin team, included in the extra/virtual\_vacation directory. Please follow the instructions as described in INSTALL.TXT before enabling the driver.

The virtual driver can create /etc/postfixadmin/vacation.conf for you, based on the current database configuration. To enable this, set createvacationconf = True in config.ini

You do not need Postfixadmin to use the virtual vacation plugin.

From a security point of view it's recommended to use a dedicated database user for the SQL driver for virtual users. This user must have UPDATE,SELECT and INSERT privileges to database 'postfix', table 'vacation' and database 'postfix', table 'virtual\_aliases'. It should not be able to access Roundcube's tables.

For MySQL the following can be used:

```
CREATE USER 'virtual_vacation'@'localhost' IDENTIFIED BY 'choose_a_password';
GRANT UPDATE,INSERT,SELECT ON `postfix` . vacation TO 'virtual_vacation'@'localhost';
GRANT DELETE,INSERT,SELECT ON `postfix` . virtual_aliases TO 'virtual_vacation'@'localhost';
```

If Roundcube's main DSN is somehow affected by an SQL injection bug, no damage can be done to the actual maildelivery. Using a dedicated DSN is optional, the plugin works fine with the main DSN.

Aliases are not supported as the implemention in vacation.pl is specific for postfixadmin. You can however change the source code so it matches your setup. This is beyond the scope of this driver.

None Driver
-----------

[](#none-driver)

This pseudo driver disables the Vacation tab for hosts that do not support Out of office replies.

Writing a new driver
--------------------

[](#writing-a-new-driver)

1. Create relevant entries in config.ini. The name of array key must match the class name.
2. Create lib/$driver.class.php
3. Have your new driver extend VacationDriver
4. Implement abstract public methods from base class: init(), setVacation(),\_get() You can access configuration settings using $this-&gt;cfg or $this-&gt;dotforward Form variables can be accessed directly using class properties, see save() method
5. Write new private helper methods like is\_active() if needed.
6. Register the available options for this driver in VacationConfig.class.php
7. Test it
8. Submit a patch

Troubleshooting
---------------

[](#troubleshooting)

For troubleshooting, you want to increase the log\_level in config/main.inc.php to 4, so errors are shown. Be sure to check the content of the database or .forward. Check also appropriate maillog to see what's going on.

Known bugs / limitations
------------------------

[](#known-bugs--limitations)

- Translations are incomplete

Todo
----

[](#todo)

- LDAP support
- Support for setting envelop sender in with settings other than -Z
- Handling case when no identities are found.

Credits
-------

[](#credits)

- The Postfixadmin team for creating the virtual vacation program.
- Squirrelmail team for the setuid backend binary
- Peter Ruiter for his initial work on the plugin.
- Rick Saul and Johnson Chow for testing

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance51

Moderate activity, may be stable

Popularity26

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/fa2f3dc31534cc3725e99ba60ef3baf82e3cb4160c23061a0f921659c3ec716b?d=identicon)[bukowski12](/maintainers/bukowski12)

---

Top Contributors

[![bukowski12](https://avatars.githubusercontent.com/u/1533077?v=4)](https://github.com/bukowski12 "bukowski12 (35 commits)")[![rplessl](https://avatars.githubusercontent.com/u/192944?v=4)](https://github.com/rplessl "rplessl (16 commits)")[![Stopi](https://avatars.githubusercontent.com/u/433878?v=4)](https://github.com/Stopi "Stopi (6 commits)")[![palw3ey](https://avatars.githubusercontent.com/u/113945369?v=4)](https://github.com/palw3ey "palw3ey (6 commits)")[![jrzeponi](https://avatars.githubusercontent.com/u/10982400?v=4)](https://github.com/jrzeponi "jrzeponi (5 commits)")[![gabor-toth](https://avatars.githubusercontent.com/u/31181491?v=4)](https://github.com/gabor-toth "gabor-toth (4 commits)")[![voojudev](https://avatars.githubusercontent.com/u/85957954?v=4)](https://github.com/voojudev "voojudev (4 commits)")[![netcons](https://avatars.githubusercontent.com/u/65823431?v=4)](https://github.com/netcons "netcons (3 commits)")[![dpavlin](https://avatars.githubusercontent.com/u/15665?v=4)](https://github.com/dpavlin "dpavlin (2 commits)")[![slimakcz](https://avatars.githubusercontent.com/u/19480248?v=4)](https://github.com/slimakcz "slimakcz (1 commits)")[![apis-mirea](https://avatars.githubusercontent.com/u/26457828?v=4)](https://github.com/apis-mirea "apis-mirea (1 commits)")

### Embed Badge

![Health badge](/badges/bukowski-vacation/health.svg)

```
[![Health](https://phpackages.com/badges/bukowski-vacation/health.svg)](https://phpackages.com/packages/bukowski-vacation)
```

###  Alternatives

[nahid/linkify

Converts URLs and email addresses in text into HTML links its extended from Misd\\Linify its also support laravel 5

11136.0k1](/packages/nahid-linkify)[ideea/language-detector

Detect languages by text

334.4k](/packages/ideea-language-detector)[ipe/smsir-php

A package for sending SMS.

1113.3k1](/packages/ipe-smsir-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
