Groupware
Find individual E-Mails in Kopano Backup Volume
Attention
Please note that this is not an official method provided by Kopano.
Individual emails from an ems_kopano-vol volume backup can be found as follows:
Assuming the volume is named backup-ems_kopano-vol.tar.gz:
tar -xzvf backup-ems_kopano-vol.tar.gz
The user data as well as the emails can then be found under ./system/var/storage/u-data/
To find the folder of a user execute the following on a running groupios instance.
docker exec -it kopano bash
USERNAME="y.sautter@groupios.com"
echo $(mysql email -e "SELECT maildir FROM users WHERE username='$USERNAME';" -sN | sed 's|/opt/exchange4all||')
All emails are located here. Individual emails can be found with:
grep ./ -lare 'Subject: AW: Urgent: Backup and Restore of Mailboxes'
Adding Additional Postfix Configuration in the Kopano Container
Note
Make sure to enter the kopano container with docker exec -it kopano bash.
Administrators can override the configuration of both main.cf and master.cf.
To extend the default configuration, you can create custom configuration files:
- For
main.cf: Create a file named/storage/postfix-main-v2.cfusing the same format as main.cf. - For
master.cf: Create a file named/storage/postfix-master.cf. The contents of this file will be passed line by line topostconf -P. Use the format<service_name>/<type>/<parameter>to define custom parameters.
These changes will be automatically applied the next time the container is started. To apply changes immediately, run /etc/my_init.d/43_postfix-config-overrides.sh && sv restart postfix inside the container.
Example: Adding a always BCC rule
- Enter the kopano container
docker exec -it kopano bash - Edit the configuration file:
vim /storage/postfix-main-v2.cf - Add the line
always_bcc = archive@example.com - Close and apply the changes:
/etc/my_init.d/43_postfix-config-overrides.sh && sv restart postfix
Auto Event Configuration Example
Note
This is a new feature released in Kopano Cloud Container Version 8.0.5 which is not fully implemented yet. Therefore some of the modifiers do not work as expected. In the final implementation the configuration file will not be modified by admins directly, but instead these options will be exposed through the manage API.
First switch into the kopano container with docker exec -it kopano bash.
Place a file auto_event.cfg in the config folder of the mailbox directory of a user. The mailbox directory of a user can be identified by executing e4a userinfo <username>.
docker e[root@manage ~]# docker exec -it kopano bash
root@groupios-groupware:/opt/exchange4all# e4a userinfo y.sautter@groupios.com
Loading y.sautter@groupios.com... ok
username y.sautter@groupios.com
maximum size 20480M
maildir /opt/exchange4all/system/var/storage/u-data/m1/v6/1
created date 2024-09-03 00:00:00 +0000 UTC
type 0
status 0
The maildir in this example is /opt/exchange4all/system/var/storage/u-data/m1/v6/1.
For example to disable the event processing create the file auto_event.cfg in the folder /opt/exchange4all/system/var/storage/u-data/m1/v6/1/config/ with the following content:
DEFAULT_ACTION = "no_action"
Example File
# ============================================================================
# Exchange4all Auto Event Configuration Example
# ============================================================================
# This file configures automatic processing of meeting requests.
#
# Backward Compatibility:
# - File missing: Adds meetings to calendar without auto-response
# - File empty: Checks free/busy status before accepting
# - File with content: Uses configuration below
#
# Location: {mailbox_directory}/config/auto_event.cfg
# ============================================================================
# ----------------------------------------------------------------------------
# Default Action (Required)
# ----------------------------------------------------------------------------
# Specifies the primary action to take for incoming meeting requests
#
# Available options:
# "add_to_calendar" - Add meeting to calendar without sending response
# "decide_based_on_freebusy" - Check availability and accept/reject accordingly
# "accept_and_add" - Always accept and add to calendar
# "reject" - Always reject meeting requests
# "no_action" - Do not process meeting requests
#
# Default: "decide_based_on_freebusy" (same as empty config file)
DEFAULT_ACTION = "decide_based_on_freebusy"
# ----------------------------------------------------------------------------
# Meeting Response Action (Optional)
# ----------------------------------------------------------------------------
# Specifies the action to take for meeting response messages (attendee replies)
#
# Available options:
# "process_reply" - Process meeting responses to update calendar (default)
# "no_action" - Ignore meeting response messages
#
# Default: "process_reply" (same as current behavior)
RESPONSE_ACTION = "process_reply"
# ----------------------------------------------------------------------------
# Action Modifiers (Optional)
# ----------------------------------------------------------------------------
# Override the default action for specific meeting types or conditions
# If not specified, the DEFAULT_ACTION is used for all meetings
[MODIFIERS]
# Action for recurring meeting requests
# Set to "reject" to decline all recurring meetings (Kopano --mr-decline-recurring)
# Available: "accept_and_add", "reject", "decide_based_on_freebusy", "add_to_calendar", "no_action"
#RECURRING_MEETINGS = "reject"
# Action for meetings that conflict with existing calendar entries
# Set to "reject" to decline conflicting meetings (Kopano --mr-decline-conflict)
# Only used if the selected action is "decide_based_on_freebusy"
# Available: "accept_and_add", "reject" (default), "add_to_calendar", "no_action"
#CONFLICTING_MEETINGS = "reject"
# Action for meetings scheduled too far in advance
# Helps prevent booking resources too far into the future
# Available: "accept_and_add", "reject", "decide_based_on_freebusy", "add_to_calendar", "no_action"
#TOO_FAR_ADVANCE = "reject"
# Action for too long meetings
# Available: "accept_and_add", "reject", "decide_based_on_freebusy", "add_to_calendar", "no_action"
#TOO_LONG = "reject"
# Action for meetings scheduled outside configured working hours
# Useful for resource booking systems with restricted availability
# Available: "accept_and_add", "reject", "decide_based_on_freebusy", "add_to_calendar", "no_action"
#OUTSIDE_WORKING_HOURS = "reject"
# ----------------------------------------------------------------------------
# Modifier Conditions (Optional)
# ----------------------------------------------------------------------------
# Configure the conditions that trigger the modifiers above
[CONDITIONS]
# Maximum number of days in advance to accept meeting requests
# Meetings beyond this limit will trigger TOO_FAR_ADVANCE modifier
# Range: 1-36500 (100 years), Default: 365
MAX_DAYS_ADVANCE = 365
# Maximum duration of meetings in minutes to accept meeting request
# Meetings longer than this limit will trigger TOO_LONG modifier
# Range: 1-525600 (1 year), Default: 1440
MAX_DURATION = 1440
# Working hours configuration (24-hour format)
# Used by OUTSIDE_WORKING_HOURS modifier
# Format: "HH:MM", Default: "09:00" and "17:00"
WORKING_HOURS_START = "09:00"
WORKING_HOURS_END = "17:00"
# Working days of the week
# Used by OUTSIDE_WORKING_HOURS modifier for weekend/holiday handling
# Available: ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
# Default: Monday through Friday
WORKING_DAYS = ["mon", "tue", "wed", "thu", "fri"]
# Overbooking capacity
# New meetings will not be considered a conflict if the number of conflicting
# meetings is not above the configured capacity.
# Used by CONFLICTING_MEETINGS modifier
# Range: 1-1000, Default: 1
OVERBOOKING_CAPACITY = 1