Notifications Service Configuration
Introduction
The notification service is responsible for sending emails to users informing them about events that happened. To do this, it hooks into the event system and listens for certain events that the users need to be informed about. As an example, when a user is added to a share, a notification email will be sent to the user.
Email Notification Templates
The notifications
service has embedded email text and html body templates. Email templates can use the placeholders {{ .Greeting }}
, {{ .MessageBody }}
and {{ .CallToAction }}
which are replaced with translations when sent, see the Translations section for more details.
Depending on the email purpose, placeholders will contain different strings. An individual translatable string is available for each purpose, to be resolved via the placeholder. Though the email subject is also part of translations, it has no placeholder as it is a mandatory email component. The embedded templates are available for all deployment scenarios.
template
placeholders
translated strings <-- source strings <-- purpose
final output
In addition, the notifications service supports custom templates. Custom email templates take precedence over the embedded ones. If a custom email template exists, the embedded templates are not used. To configure custom email templates, the NOTIFICATIONS_EMAIL_TEMPLATE_PATH
environment variable needs to point to a base folder that will contain the email templates and follow the Templates Subfolder Hierarchy. This path must be available from all instances of the notifications service, a shared storage is recommended.
{NOTIFICATIONS_EMAIL_TEMPLATE_PATH}/templates/text/email.text.tmpl
{NOTIFICATIONS_EMAIL_TEMPLATE_PATH}/templates/html/email.html.tmpl
{NOTIFICATIONS_EMAIL_TEMPLATE_PATH}/templates/html/img/
The source templates provided by Infinite Scale you can use and adjust are located in the following base folder email / templates with subfolders text
and html
.
Templates Subfolder Hierarchy
templates
│
└───html
│ │ email.html.tmpl
│ │
│ └───img
│ │ logo-mail.gif
│
└───text
│ email.text.tmpl
Custom email templates referenced via NOTIFICATIONS_EMAIL_TEMPLATE_PATH
must also be located in a subfolder templates/text
and templates/html
and must have the same names as the embedded templates. It is important that the names of these files and folders match the embedded ones. The templates/html
subfolder contains a default HTML template provided by Infinite Scale.
When using a custom HTML template, hosted images can either be linked with standard HTML code like:
<img src="https://raw.githubusercontent.com/owncloud/core/master/core/img/logo-mail.gif" alt="logo-mail"/>
or embedded as a CID source like:
<img src="cid:logo-mail.gif" alt="logo-mail"/>
In the latter case, image files must be located in the templates/html/img
subfolder. Supported embedded image types are png
, jpeg
, and gif
. Consider that embedding images via a CID resource may not be fully supported in all email web clients.
Translations
The notifications
service has embedded translations sourced via transifex to provide a basic set of translated languages. These embedded translations are available for all deployment scenarios. In addition, the service supports custom translations, though it is currently not possible to just add custom translations to embedded ones. If custom translations are configured, the embedded ones are not used. To configure custom translations, the NOTIFICATIONS_TRANSLATION_PATH
environment variable needs to point to a base folder that will contain the translation files. This path must be available from all instances of the userlog service, a shared storage is recommended. Translation files must be of type .po or .mo. For each language, the filename needs to be userlog.po
(or userlog.mo
) and stored in a folder structure defining the language code. In general the path/name pattern for a translation file needs to be:
{NOTIFICATIONS_TRANSLATION_PATH}/{language-code}/LC_MESSAGES/translations.po
The language code pattern is composed of language[_territory]
where language
is the base language and _territory
is optional and defines a country.
For example, for the language de
, one needs to place the corresponding translation files to
{NOTIFICATIONS_TRANSLATION_PATH}/de/LC_MESSAGES/translations.po
For the time being, the embedded ownCloud Web frontend only supports the main language code but does not handle any territory. When strings are available in the language code language_territory , the web frontend does not see it as it only requests language . In consequence, any translations made must exist in the requested language to avoid a fallback to the default.
|
Translation Rules
-
If a requested language code is not available, the service tries to fall back to the base language if available. For example, if the requested language-code
de_DE
is not available, the service tries to fall back to translations in thede
folder. -
If the base language
de
is also not available, the service falls back to the system’s default English (en
), which is the source of the texts provided by the code.
Default Language
The default language can be defined via the OCIS_DEFAULT_LANGUAGE
environment variable. See the settings service for a detailed description.
Configuration
Environment Variables
The notifications
service is configured via the following environment variables. Read the Environment Variable Types documentation for important details.
Name | Type | Default Value | Description |
---|---|---|---|
|
bool |
false |
Activates tracing. |
|
string |
|
The type of tracing. Defaults to '', which is the same as 'jaeger'. Allowed tracing types are 'jaeger' and '' as of now. |
|
string |
|
The endpoint of the tracing agent. |
|
string |
|
The HTTP endpoint for sending spans directly to a collector, i.e. http://jaeger-collector:14268/api/traces. Only used if the tracing endpoint is unset. |
|
string |
|
The log level. Valid values are: 'panic', 'fatal', 'error', 'warn', 'info', 'debug', 'trace'. |
|
bool |
false |
Activates pretty log output. |
|
bool |
false |
Activates colorized log output. |
|
string |
|
The path to the log file. Activates logging to this file if set. |
|
string |
127.0.0.1:9174 |
Bind address of the debug server, where metrics, health, config and debug endpoints will be exposed. |
|
string |
|
Token to secure the metrics endpoint. |
|
bool |
false |
Enables pprof, which can be used for profiling. |
|
bool |
false |
Enables zpages, which can be used for collecting and viewing in-memory traces. |
|
string |
https://localhost:9200 |
The public facing URL of the oCIS Web UI, used e.g. when sending notification eMails |
|
string |
|
SMTP host to connect to. |
|
int |
1025 |
Port of the SMTP host to connect to. |
|
string |
ownCloud <noreply@example.com> |
Sender address of emails that will be sent. |
|
string |
|
Username for the SMTP host to connect to. |
|
string |
|
Password for the SMTP host to connect to. |
|
bool |
false |
Allow insecure connections to the SMTP server. |
|
string |
none |
Authentication method for the SMTP communication. Possible values are 'login', 'plain', 'crammd5', 'none' |
|
string |
none |
Encryption method for the SMTP communication. Possible values are 'starttls', 'ssl', 'ssltls', 'tls' and 'none'. |
|
string |
127.0.0.1:9233 |
The address of the event system. The event system is the message queuing service. It is used as message broker for the microservice architecture. |
|
string |
ocis-cluster |
The clusterID of the event system. The event system is the message queuing service. It is used as message broker for the microservice architecture. Mandatory when using NATS as event system. |
|
bool |
false |
Whether to verify the server TLS certificates. |
|
string |
|
The root CA certificate used to validate the server’s TLS certificate. If provided NOTIFICATIONS_EVENTS_TLS_INSECURE will be seen as false. |
|
bool |
false |
Enable TLS for the connection to the events broker. The events broker is the ocis service which receives and delivers events between the services.. |
|
string |
|
Machine auth API key used to validate internal requests necessary to access resources from other services. |
|
string |
|
Path to Email notification templates overriding embedded ones. |
|
string |
|
(optional) Set this to a path with custom translations to overwrite the builtin translations. Note that file and folder naming rules apply, see the documentation for more details. |
|
string |
com.owncloud.api.gateway |
CS3 gateway used to look up user metadata |
|
string |
|
TLS mode for grpc connection to the go-micro based grpc services. Possible values are 'off', 'insecure' and 'on'. 'off': disables transport security for the clients. 'insecure' allows using transport security, but disables certificate verification (to be used with the autogenerated self-signed certificates). 'on' enables transport security, including server certificate verification. |
|
string |
|
Path/File name for the root CA certificate (in PEM format) used to validate TLS server certificates of the go-micro based grpc services. |
YAML Example
Note that the filename shown below has been chosen on purpose.
See the Configuration File Naming for details when setting up your own configuration.
# Autogenerated
# Filename: notifications-config-example.yaml
tracing:
enabled: false
type: ""
endpoint: ""
collector: ""
log:
level: ""
pretty: false
color: false
file: ""
debug:
addr: 127.0.0.1:9174
token: ""
pprof: false
zpages: false
ocis_url: https://localhost:9200
notifications:
SMTP:
smtp_host: ""
smtp_port: 1025
smtp_sender: ownCloud <noreply@example.com>
smtp_username: ""
smtp_password: ""
insecure: false
smtp_authentication: none
smtp_encryption: none
events:
endpoint: 127.0.0.1:9233
cluster: ocis-cluster
tls_insecure: false
tls_root_ca_certificate: ""
enable_tls: false
machine_auth_api_key: ""
email_template_path: ""
translation_path: ""
reva_gateway: com.owncloud.api.gateway
grpc_client_tls: null
grpc_client_tls:
mode: ""
cacert: ""