Recent Posts

Pages: [1] 2 3 ... 10
General Discussion / Re: Forwarding
« Last post by SKaero on Today at 09:50:50 PM »
Contact your mail provider and ask them where forwarding rules can be setup/changed.
General Discussion / Forwarding
« Last post by bkharris on Today at 05:00:31 PM »
I've used roundcube for several years.

Over the last week, some friends and clients have gotten a return/error message that their email to me didn't go through because it was forwarded to an old employer.    This has only just started happening even though I've not used that former employer email for nearly 1 year. 

Within roundcube I don't have any forwarding rules set in the filters. 

Anybody have any ideas?


General Discussion / Sieve doesn't working
« Last post by White-Tiger on Today at 08:57:45 AM »
I'm working into a VPS installed on Ubuntu 18.04 LTS, with Virtualmin.
Now I've installed Sieve and activated plugin in RC, but the filters are not working.

These are the configuration files in Dovecot.

Code: [Select]
# A comma separated list of IPs or hosts where to listen in for connections.
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf.
#listen = *, ::

# Base directory where to store runtime data.
#base_dir = /var/run/dovecot/

# Name of this instance. In multi-instance setup doveadm and other commands
# can use -i <instance_name> to select which instance is used (an alternative
# to -c <config_path>). The instance name is also added to Dovecot processes
# in ps output.
#instance_name = dovecot

# Greeting message for clients.
#login_greeting = Dovecot ready.

# Space separated list of trusted network ranges. Connections from these
# IPs are allowed to override their IP addresses and ports (for logging and
# for authentication checks). disable_plaintext_auth is also ignored for
# these networks. Typically you'd specify your IMAP proxy servers here.
#login_trusted_networks =

# Space separated list of login access check sockets (e.g. tcpwrap)
#login_access_sockets =

# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
# proxying. This isn't necessary normally, but may be useful if the destination
# IP is e.g. a load balancer's IP.
#auth_proxy_self =

# Show more verbose process titles (in ps). Currently shows user name and
# IP address. Useful for seeing who are actually using the IMAP processes
# (eg. shared mailboxes or if same uid is used for multiple accounts).
#verbose_proctitle = no

# Should all processes be killed when Dovecot master process shuts down.
# Setting this to "no" means that Dovecot can be upgraded without
# forcing existing client connections to close (although that could also be
# a problem if the upgrade is e.g. because of a security fix).
#shutdown_clients = yes

# If non-zero, run mail commands via this many connections to doveadm server,
# instead of running them directly in the same process.
#doveadm_worker_count = 0
# UNIX socket or host:port used for connecting to doveadm server
#doveadm_socket_path = doveadm-server

# Space separated list of environment variables that are preserved on Dovecot
# startup and passed down to all of its child processes. You can also give
# key=value pairs to always set specific settings.
#import_environment = TZ

## Dictionary server settings

# Dictionary can be used to store key=value lists. This is used by several
# plugins. The dictionary can be accessed either directly or though a
# dictionary server. The following dict block maps dictionary names to URIs
# when the server is used. These can then be referenced using URIs in format
# "proxy::<name>".

dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext

# Most of the actual configuration gets included below. The filenames are
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
# in filenames are intended to make it easier to understand the ordering.
!include conf.d/*.conf

# A config file can also tried to be included without giving an error if
# it's not found:
!include_try local.conf
local_name {
ssl_cert = </home/server1/ssl.cert
ssl_key = </home/server1/ssl.key
local_name domain2-tld {
ssl_cert = </home/user1/ssl.cert
ssl_key = </home/user1/ssl.key

Code: [Select]
## LDA specific settings (also used by LMTP)

# Address to use when sending rejection mails.
# Default is postmaster@<your domain>. %d expands to recipient domain.
#postmaster_address =
postmaster_address = postmaster@mio-domnio.tld

# Hostname to use in various parts of sent mails (e.g. in Message-Id) and
# in LMTP replies. Default is the system's real hostname@domain.
#hostname =

# If user is over quota, return with temporary failure instead of
# bouncing the mail.
#quota_full_tempfail = no

# Binary to use for sending mails.
#sendmail_path = /usr/sbin/sendmail

# If non-empty, send mails via this SMTP host[:port] instead of sendmail.
#submission_host =

# Subject: header to use for rejection mails. You can use the same variables
# as for rejection_reason below.
#rejection_subject = Rejected: %s

# Human readable error message for rejection mails. You can use variables:
#  %n = CRLF, %r = reason, %s = original subject, %t = recipient
#rejection_reason = Your message to <%t> was automatically rejected:%n%r

# Delimiter character between local-part and detail in email address.
#recipient_delimiter = +

# Header where the original recipient address (SMTP's RCPT TO: address) is taken
# from if not available elsewhere. With dovecot-lda -a parameter overrides this.
# A commonly used header for this is X-Original-To.
#lda_original_recipient_header =

# Should saving a mail to a nonexistent mailbox automatically create it?
#lda_mailbox_autocreate = no

# Should automatically created mailboxes be also automatically subscribed?
#lda_mailbox_autosubscribe = no

protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  #mail_plugins = $mail_plugins
  mail_plugins = $mail_plugins sieve


Code: [Select]
protocol lmtp {
  postmaster_address = postmaster@my-domain.tld
  mail_plugins = $mail_plugins sieve

Code: [Select]
## Settings for the Sieve interpreter

# Do not forget to enable the Sieve plugin in 15-lda.conf and 20-lmtp.conf
# by adding it to the respective mail_plugins= settings.

# The Sieve interpreter can retrieve Sieve scripts from several types of
# locations. The default `file' location type is a local filesystem path
# pointing to a Sieve script file or a directory containing multiple Sieve
# script files. More complex setups can use other location types such as
# `ldap' or `dict' to fetch Sieve scripts from remote databases.
# All settings that specify the location of one ore more Sieve scripts accept
# the following syntax:
# location = [<type>:]path[;<option>[=<value>][;...]]
# If the type prefix is omitted, the script location type is 'file' and the
# location is interpreted as a local filesystem path pointing to a Sieve script
# file or directory. Refer to Pigeonhole wiki or INSTALL file for more
# information.

plugin {
  # The location of the user's main Sieve script or script storage. The LDA
  # Sieve plugin uses this to find the active script for Sieve filtering at
  # delivery. The "include" extension uses this location for retrieving
  # :personal" scripts. This is also where the  ManageSieve service will store
  # the user's scripts, if supported.
  # Currently only the 'file:' location type supports ManageSieve operation.
  # Other location types like 'dict:' and 'ldap:' can currently only
  # be used as a read-only script source ().
  # For the 'file:' type: use the ';active=' parameter to specify where the
  # active script symlink is located.
  # For other types: use the ';name=' parameter to specify the name of the
  # default/active script.
  sieve = file:~/sieve;active=~/.dovecot.sieve

  # The default Sieve script when the user has none. This is the location of a
  # global sieve script file, which gets executed ONLY if user's personal Sieve
  # script doesn't exist. Be sure to pre-compile this script manually using the
  # sievec command line tool if the binary is not stored in a global location.
  # --> See sieve_before for executing scripts before the user's personal
  #     script.
  sieve_default = /var/lib/dovecot/sieve/default.sieve
  # The name by which the default Sieve script (as configured by the
  # sieve_default setting) is visible to the user through ManageSieve.
  #sieve_default_name =

  # Location for ":global" include scripts as used by the "include" extension.
  #sieve_global =

  # The location of a Sieve script that is run for any message that is about to
  # be discarded; i.e., it is not delivered anywhere by the normal Sieve
  # execution. This only happens when the "implicit keep" is canceled, by e.g.
  # the "discard" action, and no actions that deliver the message are executed.
  # This "discard script" can prevent discarding the message, by executing
  # alternative actions. If the discard script does nothing, the message is
# still discarded as it would be when no discard script is configured.
  #sieve_discard =

  # Location Sieve of scripts that need to be executed before the user's
  # personal script. If a 'file' location path points to a directory, all the
  # Sieve scripts contained therein (with the proper `.sieve' extension) are
  # executed. The order of execution within that directory is determined by the
  # file names, using a normal 8bit per-character comparison.
  # Multiple script locations can be specified by appending an increasing number
  # to the setting name. The Sieve scripts found from these locations are added
  # to the script execution sequence in the specified order. Reading the
  # numbered sieve_before settings stops at the first missing setting, so no
  # numbers may be skipped.
  #sieve_before = /var/lib/dovecot/sieve.d/
  #sieve_before2 = ldap:/etc/sieve-ldap.conf;name=ldap-domain
  #sieve_before3 = (etc...)

  # Identical to sieve_before, only the specified scripts are executed after the
  # user's script (only when keep is still in effect!). Multiple script
  # locations can be specified by appending an increasing number.
  #sieve_after =
  #sieve_after2 =
  #sieve_after2 = (etc...)

  # Which Sieve language extensions are available to users. By default, all
  # supported extensions are available, except for deprecated extensions or
  # those that are still under development. Some system administrators may want
  # to disable certain Sieve extensions or enable those that are not available
  # by default. This setting can use '+' and '-' to specify differences relative
  # to the default. For example `sieve_extensions = +imapflags' will enable the
  # deprecated imapflags extension in addition to all extensions were already
  # enabled by default.
  #sieve_extensions = +notify +imapflags

  # Which Sieve language extensions are ONLY available in global scripts. This
  # can be used to restrict the use of certain Sieve extensions to administrator
  # control, for instance when these extensions can cause security concerns.
  # This setting has higher precedence than the `sieve_extensions' setting
  # (above), meaning that the extensions enabled with this setting are never
  # available to the user's personal script no matter what is specified for the
  # `sieve_extensions' setting. The syntax of this setting is similar to the
  # `sieve_extensions' setting, with the difference that extensions are
  # enabled or disabled for exclusive use in global scripts. Currently, no
  # extensions are marked as such by default.
  #sieve_global_extensions =

  # The Pigeonhole Sieve interpreter can have plugins of its own. Using this
  # setting, the used plugins can be specified. Check the Dovecot wiki
  # ( or the pigeonhole website
  # ( for available plugins.
  # The sieve_extprograms plugin is included in this release.
  #sieve_plugins =

  # The separator that is expected between the :user and :detail
  # address parts introduced by the subaddress extension. This may
  # also be a sequence of characters (e.g. '--'). The current
  # implementation looks for the separator from the left of the
  # localpart and uses the first one encountered. The :user part is
  # left of the separator and the :detail part is right. This setting
  # is also used by Dovecot's LMTP service.
  #recipient_delimiter = +

  # The maximum size of a Sieve script. The compiler will refuse to compile any
  # script larger than this limit. If set to 0, no limit on the script size is
  # enforced.
  #sieve_max_script_size = 1M

  # The maximum number of actions that can be performed during a single script
  # execution. If set to 0, no limit on the total number of actions is enforced.
  #sieve_max_actions = 32

  # The maximum number of redirect actions that can be performed during a single
  # script execution. If set to 0, no redirect actions are allowed.
  #sieve_max_redirects = 4

  # The maximum number of personal Sieve scripts a single user can have. If set
  # to 0, no limit on the number of scripts is enforced.
  # (Currently only relevant for ManageSieve)
  #sieve_quota_max_scripts = 0

  # The maximum amount of disk storage a single user's scripts may occupy. If
  # set to 0, no limit on the used amount of disk storage is enforced.
  # (Currently only relevant for ManageSieve)
  #sieve_quota_max_storage = 0

  # The primary e-mail address for the user. This is used as a default when no
  # other appropriate address is available for sending messages. If this setting
  # is not configured, either the postmaster or null "<>" address is used as a
  # sender, depending on the action involved. This setting is important when
  # there is no message envelope to extract addresses from, such as when the
  # script is executed in IMAP.
  #sieve_user_email =

  # The path to the file where the user log is written. If not configured, a
  # default location is used. If the main user's personal Sieve (as configured
  # with sieve=) is a file, the logfile is set to <filename>.log by default. If
  # it is not a file, the default user log file is ~/.dovecot.sieve.log.
  #sieve_user_log =

  # Specifies what envelope sender address is used for redirected messages.
  # The following values are supported for this setting:
  #   "sender"         - The sender address is used (default).
  #   "recipient"      - The final recipient address is used.
  #   "orig_recipient" - The original recipient is used.
  #   "user_email"     - The user's primary address is used. This is
  #                      configured with the "sieve_user_email" setting. If
  #                      that setting is unconfigured, "user_mail" is equal to
  #                      "recipient".
  #   "postmaster"     - The postmaster_address configured for the LDA.
  #   "<user@domain>"  - Redirected messages are always sent from user@domain.
  #                      The angle brackets are mandatory. The null "<>" address
  #                      is also supported.
  # This setting is ignored when the envelope sender is "<>". In that case the
  # sender of the redirected message is also always "<>".
  #sieve_redirect_envelope_from = sender

  # Trace debugging provides detailed insight in the operations performed by
  # the Sieve script. These settings apply to both the LDA Sieve plugin and the
  # IMAPSIEVE plugin.
  # WARNING: On a busy server, this functionality can quickly fill up the trace
  # directory with a lot of trace files. Enable this only temporarily and as
  # selective as possible.
  # The directory where trace files are written. Trace debugging is disabled if
  # this setting is not configured or if the directory does not exist. If the
  # path is relative or it starts with "~/" it is interpreted relative to the
  # current user's home directory.
  #sieve_trace_dir =
  # The verbosity level of the trace messages. Trace debugging is disabled if
  # this setting is not configured. Possible values are:
  #   "actions"        - Only print executed action commands, like keep,
  #                      fileinto, reject and redirect.
  #   "commands"       - Print any executed command, excluding test commands.
  #   "tests"          - Print all executed commands and performed tests.
  #   "matching"       - Print all executed commands, performed tests and the
  #                      values matched in those tests.
  #sieve_trace_level =
  # Enables highly verbose debugging messages that are usually only useful for
  # developers.
  #sieve_trace_debug = no
  # Enables showing byte code addresses in the trace output, rather than only
  # the source line numbers.
  #sieve_trace_addresses = no

In ~/sieve there is the file roundcube.sieve with my filters creted in RC.
Code: [Select]
require ["fileinto"];
# rule:[ZZZ-Test]
if header :contains "subject" "ZZZ-Test"
fileinto "ZZZ-Test";
# rule:[User 1]
if header :is "from" "user1@domain.tld"
fileinto "ZZZ-Test";

From the command line,
telnet 4190 I see:
Code: [Select]
Connected to name.mydomain.tld.
Escape character is '^]'.
"IMPLEMENTATION" "Dovecot (Ubuntu) Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext"
"NOTIFY" "mailto"
"VERSION" "1.0"
OK "Dovecot (Ubuntu) ready."

So, It seems that both Dovecot and Sieve are working but the two do not interact with each other.

Furthermore, in the Managesieve plugin of RC there is the file: managesieve.php with references about "vacation", but in Sieve I don't find anything related to the management of the vacation.
Where is this management and the relative filter?

Thanks in advance for the help.
Issues & Bugs / double line spacing in compose editor
« Last post by sukisen on Today at 05:54:21 AM »
This is an old issue and I have looked into the answers on the forum here -

But it also says forced_root_block:false is deprecated, Can someone please help me on where to apply this code and whether this will work or has this been deprecated?
We are using roundcube 1.3.6
Issues & Bugs / Re: disable column ordering
« Last post by sukisen on June 22, 2019, 05:22:18 AM »
This worked JohnDoh, sorry for asking such a basic question but I am very new to roundcube...
General Discussion / PHP offers me Roundcube's index.php as Download (Nginx)
« Last post by Deex on June 22, 2019, 02:58:14 AM »
Hey, i did a fresh installation of Roundcube in Debian Stretch with PHP7.0-FPM and NGINX. Roundcube is installed inside /usr/share/roundcube

If i use Rouncube from a folder like or it works perfeclty but as i try to use Roundcube directly on the Root of the Website, PHP is offering it to me as Download.

This Vhost Config here is not working and i get it as download
Code: [Select]
server {
        listen *:80;

        listen *:443 ssl;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_certificate /var/www/clients/client0/web1/ssl/;
        ssl_certificate_key /var/www/clients/client0/web1/ssl/;

        server_name ;
        root /usr/share/roundcube;

        index index.html index.htm index.php index.cgi index.xhtml;

          location / {
              try_files $uri $uri/ index.php;

           location ~ ^/(bin|SQL|config|temp|logs)/ {
              deny all;

   location ~* \.php$ {
                        fastcgi_param  QUERY_STRING            $query_string;
                       fastcgi_param   REQUEST_METHOD          $request_method;
                       fastcgi_param   CONTENT_TYPE            $content_type;
                       fastcgi_param   CONTENT_LENGTH          $content_length;

                       fastcgi_param   SCRIPT_FILENAME         $request_filename;
                       fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
                       fastcgi_param   REQUEST_URI             $request_uri;
                       fastcgi_param   DOCUMENT_URI            $document_uri;
                       fastcgi_param   DOCUMENT_ROOT           $document_root;
                       fastcgi_param   SERVER_PROTOCOL         $server_protocol;

                       fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
                       fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

                       fastcgi_param   REMOTE_ADDR             $remote_addr;
                       fastcgi_param   REMOTE_PORT             $remote_port;
                       fastcgi_param   SERVER_ADDR             $server_addr;
                       fastcgi_param   SERVER_PORT             $server_port;
                       fastcgi_param   SERVER_NAME             $server_name;

                       fastcgi_param   HTTPS                   $https;

                       # PHP only, required if PHP was built with --enable-force-cgi-redirect
                       fastcgi_param   REDIRECT_STATUS         200;
                       # To access SquirrelMail, the default user (like www-data on Debian/Ubuntu) must be used
                       fastcgi_pass unix:/var/lib/php7.0-fpm/apps.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;


While this here would work

Code: [Select]
location /{
               location ~ ^/roundcube/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_param   QUERY_STRING            $query_string;
                       fastcgi_param   REQUEST_METHOD          $request_method;
                       fastcgi_param   CONTENT_TYPE            $content_type;
                       fastcgi_param   CONTENT_LENGTH          $content_length;

                       fastcgi_param   SCRIPT_FILENAME         $request_filename;
                       fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
                       fastcgi_param   REQUEST_URI             $request_uri;
                       fastcgi_param   DOCUMENT_URI            $document_uri;
                       fastcgi_param   DOCUMENT_ROOT           $document_root;
                       fastcgi_param   SERVER_PROTOCOL         $server_protocol;

                       fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
                       fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

                       fastcgi_param   REMOTE_ADDR             $remote_addr;
                       fastcgi_param   REMOTE_PORT             $remote_port;
                       fastcgi_param   SERVER_ADDR             $server_addr;
                       fastcgi_param   SERVER_PORT             $server_port;
                       fastcgi_param   SERVER_NAME             $server_name;

                       fastcgi_param   HTTPS                   $https;

                       # PHP only, required if PHP was built with --enable-force-cgi-redirect
                       fastcgi_param   REDIRECT_STATUS         200;
                       # To access SquirrelMail, the default user (like www-data on Debian/Ubuntu) must be used
                       fastcgi_pass unix:/var/lib/php7.0-fpm/apps.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;

General Discussion / Plugins
« Last post by White-Tiger on June 21, 2019, 09:03:13 AM »
Hi everyone.
I am new to Readcube (1.3.9) that I would like to adopt in place of Thunderbird.
I was convinced of the availability of plugins that could allow me to use it as I am using Thunderbird.
But many of the ones I'm testing (downloaded from the official repository) don't work at all.

I need to manage multiple filters, tags, multiple signature, efficient address book management, the possibility of attaching large files using cloud services such as Dropbox, etc.

Is there an updated and tested list?

Thanks in advance for any advice.
Roundcube Discussion / progressive web app
« Last post by Artem on June 21, 2019, 05:05:11 AM »
Hello. Tell me how can I connect the progressive web app to the roundcube?
Issues & Bugs / Re: disable column ordering
« Last post by JohnDoh on June 20, 2019, 03:40:56 PM »
well i guess first i should say that `$rcmail_config` was depreciated in rc 1.0 and it should be `$config`.

to stop users changing the order you can add `list_cols` to the `$config['dont_override']` array.
Issues & Bugs / disable column ordering
« Last post by sukisen on June 20, 2019, 12:44:52 PM »
I am using roundcube 1.3.6
Now, i have looked at an old entry here  -,2302.msg9403.html#msg9403
We do have the configs mentioned in the link , namely $rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size');
My issue is not withe the column orders, the customer wants to DISABLE users from manually dragging and changing the positions of the available columns in the array.
Currently, all users are able to drag these 4 columns and alter their position.
Any help is much appreciated
Pages: [1] 2 3 ... 10