PHPackages                             dsoares/rcguard - 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. [Mail &amp; Notifications](/categories/mail)
4. /
5. dsoares/rcguard

ActiveRoundcube-plugin[Mail &amp; Notifications](/categories/mail)

dsoares/rcguard
===============

Roundcube plugin that enforces reCAPTCHA for users that have too many failed logins

1.3.2(4y ago)243.9k↑62.2%11[6 issues](https://github.com/dsoares/roundcube-rcguard/issues)[2 PRs](https://github.com/dsoares/roundcube-rcguard/pulls)GPL-3.0+PHPPHP &gt;=5.4

Since Oct 7Pushed 3y ago8 watchersCompare

[ Source](https://github.com/dsoares/roundcube-rcguard)[ Packagist](https://packagist.org/packages/dsoares/rcguard)[ Docs](https://github.com/dsoares/roundcube-rcguard)[ RSS](/packages/dsoares-rcguard/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (23)Used By (0)

Roundcube plugin rcguard
========================

[](#roundcube-plugin-rcguard)

Introduction
------------

[](#introduction)

This plugin logs failed login attempts and requires users to go through a reCAPTCHA verification process when the number of failed attempts go too high. It provides protection against automated attacks.

Failed attempts are logged by IP and stored in a database table. IPs are also released after a certain expire amount of time.

Installation
------------

[](#installation)

**IMPORTANT: This plugin requires reCAPTCHA API keys to work properly.**
These can be obtained from .

#### With Composer

[](#with-composer)

Add this plugin `dsoares/rcguard` to the `require` section of your Roundcube `composer.json`, run composer update and enable rcguard in the main Roundcube configuration file.
OR just run:

```
composer require dsoares/rcguard

```

Copy `config.inc.php.dist` to `config.inc.php` and modify as necessary.

#### Manually

[](#manually)

Place the contents of this directory under `plugins/rcguard` and enable rcguard in the main Roundcube configuration file.

Copy `config.inc.php.dist` to `config.inc.php` and modify as necessary.

Use the files under `SQL/` to create the database schema required for rcguard. The table should be created in the database used by Roundcube. **NOTE**: If you use the Roundcube `db_prefix` config option, you must rename the table `rcguard` accordingly.

Customizing reCAPTCHA
---------------------

[](#customizing-recaptcha)

You may customize the following in the `config.inc.php` file:

- the API version: `v3`, `v2invisible` or `v2`;
- the v2 widget theme: `light` or `dark`;
- the v2 widget size: `normal` or `compact`.

For more information about the widget please check the [documentation about reCAPTCHA](https://developers.google.com/recaptcha/intro).

The plugin configuration file has several other options you may configure, please take at look.

Since May 2018, you can define a proxy (anonymous or authenticated) to request the recaptcha widget.

Supported databases
-------------------

[](#supported-databases)

- MySQL
- PostgreSQL
- SQLite

Contact
-------

[](#contact)

The original author of this plugin was [Denny Lin](https://github.com/dennylin93). I forked it some years ago to 1) use reCAPTCHA v2.0, 2) add the larry skin and 3) because the project issues were taking too long to be answered. Also, the original project was not updated since 2015 and many things have changed in the meantime in Roundcube's API.

I will maintain this project because i need it working with the latest version of Roundcube.

Comments and suggestions are welcome (preferentially via issues).

Email: [Diana Soares](mailto:diana.soares@gmail.com)

License
-------

[](#license)

This plugin is distributed under the GPL-3.0+ license.

This plugin also contains a PHP library for reCAPTCHA that is distributed under its own license. See the library file for the exact details.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance15

Infrequent updates — may be unmaintained

Popularity32

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 86.1% of commits — single point of failure

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.

###  Release Activity

Cadence

Every ~99 days

Recently: every ~149 days

Total

22

Last Release

1778d ago

PHP version history (3 changes)1.0.0PHP &gt;=5.2.1

1.1.0PHP &gt;=5.3.0

1.3.0PHP &gt;=5.4

### Community

Maintainers

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

---

Top Contributors

[![dsoares](https://avatars.githubusercontent.com/u/673736?v=4)](https://github.com/dsoares "dsoares (87 commits)")[![cagdasbas](https://avatars.githubusercontent.com/u/7910267?v=4)](https://github.com/cagdasbas "cagdasbas (3 commits)")[![Maxqia](https://avatars.githubusercontent.com/u/10419267?v=4)](https://github.com/Maxqia "Maxqia (2 commits)")[![Mindless999](https://avatars.githubusercontent.com/u/20699783?v=4)](https://github.com/Mindless999 "Mindless999 (2 commits)")[![tokred](https://avatars.githubusercontent.com/u/12331973?v=4)](https://github.com/tokred "tokred (2 commits)")[![cslevi81](https://avatars.githubusercontent.com/u/18506732?v=4)](https://github.com/cslevi81 "cslevi81 (1 commits)")[![valarauco](https://avatars.githubusercontent.com/u/434898?v=4)](https://github.com/valarauco "valarauco (1 commits)")[![sjinks](https://avatars.githubusercontent.com/u/7810770?v=4)](https://github.com/sjinks "sjinks (1 commits)")[![edtsz](https://avatars.githubusercontent.com/u/3809579?v=4)](https://github.com/edtsz "edtsz (1 commits)")[![evandrofisico](https://avatars.githubusercontent.com/u/290162?v=4)](https://github.com/evandrofisico "evandrofisico (1 commits)")

---

Tags

captchapluginroundcubesecuritymailroundcubecaptcha

### Embed Badge

![Health badge](/badges/dsoares-rcguard/health.svg)

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

###  Alternatives

[zbateson/mail-mime-parser

MIME email message parser

53949.2M79](/packages/zbateson-mail-mime-parser)[zbateson/stream-decorators

PHP psr7 stream decorators for mime message part streams

4748.6M6](/packages/zbateson-stream-decorators)[opcodesio/mail-parser

Parse emails without the mailparse extension

216.8M8](/packages/opcodesio-mail-parser)[kitist/html5_notifier

Desktop Notifications for Roundcube

7710.9k](/packages/kitist-html5-notifier)[weird-birds/thunderbird_labels

Shows thunderbird labels for messages in roundcube webmail.

6310.5k](/packages/weird-birds-thunderbird-labels)[toteph42/identity_switch

This plugin allows users to switch between different accounts (and check for new mails) in a single Roundcube session.

211.2k](/packages/toteph42-identity-switch)

PHPackages © 2026

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