Roundcube webmail – Auto reply plugin

roundcubeAt the office we use a standard mailserver config with POP3, IMAP, SpamAssassin and Squirellmail for webmail on linux. At the place where I previously worked we had a default PLESK installation with Horde for webmail.

I usually just use IMAP for my e-mail within Outlook on my office computer and IMAP with Thunderbird when I'm home on my laptop with Ubuntu, but my laptop gave me some troubles at home so I took my girlfriends laptop and fired up my webmail.

Damn!, Squirellmail is so incredibly ugly and gui-unfriendly compared to Horde or any other webmail project you come across. Not only do the themes stink, but it misses out on several basic functionality like sieve filtering and per-user SpamAssassin preferences.

I had some spare time on my hands so I went looking for a Squirellmail alternative. Very quickly you will find that there aren't that many (good) webmail clients around. There is GoogleMail, Horde, Roundcube, Zimbra and a few lesser known ones. GoogleMail isn't an option since we don't like to host our e-mail elsewhere, Zimbra isn't because it is more of an collaboration suite then it is a webmail client and Horde isn't an option once you compare it to Roundcube 🙂

RoundCube is an excellent open source experience for an AJAX webmail, and what will really attract you to Roundcube is its advanced user interface with drag and drop functionnalities which make it very easy to organize your email. RoundCube Webmail is written in PHP and requires a MySQL database. The user interface is fully skinnable using XHTML and CSS 2. Roundcube also offers extensions in the form of plugins. This enables you to use SpamAssassin options per-user, Sievefiltering per-user, etc.

Roundcube was definitely the webmail program the fitted our needs most. We quickly installed it next to our Squirellmail installation. The installation was super-easy and super-fast. Then installed the ManageSieve and SpamAssassin plugins and I thought we were good to go.

Then a colleague mentioned that he couldn't set a auto-reply from within RoundCube. He was planning to take a few days off and wanted to set an out-of-the-office notification. I quickly looked in the RoundCube repository for a auto-reply function but it is only available for a specific Windows mailserver. On the forums of RoundCube the programmers state that there will be no such official plugin or feature made available since they think it is not something the webmail program should manage.

I disagree.

I think users should be able to set their auto-reply message from within their webmail and not having to go trough Usermin or Webmin to do so.

Since SquirellMail DID have the auto-reply functionality available and SquirellMail also runs on PHP and MySQL I decided to just take that plugin and port it to RoundCube. I wrapped the whole thing in a RoundCube plugin format and voila, it works brilliantly.

The plugin writes a file to the users homedir where the SendMail server picks it up and fires the 'Vacation' plugin that sends an auto-reply.

Anyone who wants the plugin can download it here.


Update - If you can't use FTP to put the forward files you may try using the squirrelmail_vacation_proxy program. Not that I do not support this program nor the use of it.

You may download it here.


Update - There is now a SourceForge project concerning this plugin. You can download the files there and contribute to it as well.

Support and questions can also be put in the projects forum.

Senior Software Engineer @ Comrads Solutions B.V. .

122 Comments

  1. Petris says:

    For virtual users and vacation / out of office replies have a look at http://feurix.org/projects/response/

  2. Rick says:

    Peter, Jasper Slits from http://feurix.org/projects/response/ has resolved my problem for me.

    In the vacation config file we have replaced the default settings with the below and the plugin now dynamically picks up the selected site from roundcube when a specific site is selected using the multiple site dropdown box.

    $rcmail_config['ftp']['server'] = $_SESSION['imap_host'];
    if (empty($_SESSION['imap_host'])) {
    die("imap_host is empty");
    }

    The if statement is just to make we have the right variable.

    regards Rick

  3. PeterRuiter says:

    @Rick - Great to hear that Jasper allready picked this up. When I see him next week irl then I'll give him a pat on the back for you 🙂

  4. Rick says:

    Peter I have another query. It seems that the vacation response is not handling aliases.. In the squirrelmail vacation plugin it does have an option to add email aliases that the user may use and so in the .forward file you will see

    \rick
    "|/usr/bin/vacation -a rick.saul -a tom.jones rick"

    where rick.saul and tom.jones are both aliases for this email address.

    Is it possible to have this implemented in your plugin?

    thanks Rick

  5. Rick says:

    Peter I have just installed the version from here to try and resolve alias issues. http://rcubevacation.svn.sourceforge.net/viewvc/rcubevacation/trunk/

    However I get a whitescreen when trying to access my roundcube and the error log has

    [14-Jan-2010 00:35:10] PHP Parse error: syntax error, unexpected '}' in /var/www/html/safe/roundcubemail-0.3.1/plugins/vacation/lib/dotforward.class.php on line 68

    Also in trying to set up the RSS feed
    While trying to retrieve the URL: feed://http//peterruiter.com/2009/07/05/roundcube-webmail-auto-reply-plugin/feed/

    The following error was encountered:
    * Invalid URL
    Replacing feed://http//peterruiter... with feed://http://peterruite....
    did not help.
    regards Rick

  6. PeterRuiter says:

    @Rick - Could you please copy past this question in the Sourceforge forums? Jasper is currently maintaining the trunk version and I believe that he allready had this fixed.
    Anyway, when you get it on that forum then he'll get the message automatically as well.

  7. Rick says:

    thanks Peter. Will do. Rick

  8. Edmund says:

    I've been trying to get this plugin to work with 0.3.1 of Roundcube running on CentOS 5.4 with PHP 5.1.6. The tab shows up, but clicking it presents a blank page when trying to access the URL: http://x.x.x.x/webmail/?_task=settings&_action=plugin.vacation

    Is there a limitation on the PHP version or something that requires me to upgrade? Any help would be appreciated.

  9. Rafal Domeracki says:

    @PeterRuiter

    I have sent You Polish translation pl_PL.inc file. I found an e-mail address in README.txt. You didn't respond. Is this address up to date?
    I have new version and I would like to send the file again.

  10. PeterRuiter says:

    @Rafal - Sorry, but I haven't seen it before. I think it might have ended up in my spamfolder.
    Could you please send it to the info [at] peterruiter.com e-mail address. Then I'll add it to the trunk right away.

  11. PeterRuiter says:

    @Edmund - That setup should work perfectly. We just fixed some bugs, so if you please could check out the svn version from the sourceforge repo and test that.

  12. Marc says:

    Hey,

    Just installed the plugin and am getting the new tab in Roundcube but when i click on it I get

    CONFIGURATION ERROR

    Vacation plugin: Cannot login to FTP-server 'localhost' with username: marc.xxx@xxx.xx.xx
    Please read the INSTALL instructions!

  13. PeterRuiter says:

    @Marc, Please post your questions at the Sourceforge forums of this project. Jasper Slits is maintaining this version of the plugin and he can help you with this.

  14. Clemo says:

    Hey

    I am wondering whether there is a way to make this plugin use the Postfixadmin vacation program (vacation.pl). I can successfully set the vacation messages from Postfixadmin, but i would want my users to be able to do it via Roundcube rather than having to login to two different web email programs.

  15. PeterRuiter says:

    @clemo: That shouldn't be to hard at all. As long as you know the vacation.pl commandline parameters to set a vacation message you can easily adjust the php (exec)code.

  16. Erik Clemetine says:

    I realised that there is not much writeup for the sieve driver. I have successfully configured managesieve with dovecot and can even set a filter for vacation message using it. But now i want to use your vacation plugin. Can you kindly guide me (and others) with some step by step instructions to achieve this. I read the INSTALL.TXT and README.TXT but the instructions for sieve driver are not there. I would gratefully appreciate this. Thanks for the great work.

  17. PeterRuiter says:

    @Erik - sure we can guide you trough it. Could you please repost your question at the sourceforge project forums?
    Then other proiectmembers can answer your questions and other users can benefit from the answer.

  18. Andre Tann says:

    Hello,

    nice plugin, does what it's expected to do. But one thing is a problem for me: I'm using the ftp method to upload the .vacation.msg, and there is no encoding included in the message header like

    Content-Type: Text/Plain;
    charset="utf-8"
    Subject: Out of office

    Hello...

    I have tried to set in the http://ftp.class.php:

    $vacation_header .= sprintf("Content-Type: text/plain;\n charset=UTF-8\nSubject: %s\n\n",$this->subject);

    This works, but then the plugin gets a problem when downloading the message the next time.

    Has anyone a hint for me how to work around / solve this?

    Thanks,
    Andre

  19. Roundcube Vacation / Autoreply plugin says:

    [...] for me so i can do the same;I need to follow through properly,any help will be highly appreciated. http://peterruiter.com/2009/07/05/ro...-reply-plugin/ http://sourceforge.net/projects/rcubevacation/ Please let me follow through with you on a step by [...]

  20. Dummy says:

    rly n1 plugin, but i miss (or just can't figure out) ftp configuration parameters like username, password and port? and on mac osx i have no vacation command - have to find an alternative....

  21. Reinhard Kuss says:

    Hi all,

    I've successfully made a workaround to the problem Andre mentioned:
    Wrote a simple wrapper-script (shell) which is called instead of /usr/bin/vacation.
    The script takes a mail as input (line by line) via stdin, writes to a temp-file, reformat the mail using reformail (its in package "maildrop" in debian) adding any headers necessary, and pipes the new mail through /usr/bin/vacation (and give it all the parameters which where given the wrapper-script).

    Code follows:

    TMP=`mktemp /tmp/vacation.XXXX`
    cat .vacation.msg | reformail -a'Content-Type: text/plain; charset=UTF-8' > .vacation.msg.new
    while read line
    do
    echo "$line" >> $TMP
    done
    cat $TMP | /usr/bin/vacation -f ~/.vacation.db -m ~/.vacation.msg.new $*
    rm $TMP
    exit

    HTH
    Reinhard

  22. DaniloM says:

    Reinhard,

    Thank You,
    following Your message vacation reply works just fine for me.
    I use Suse distribution.

    Danilo

Leave a Comment