mattermail
mattermail copied to clipboard
Email Integration for Mattermost
MatterMail
MatterMail is an integration service for Mattermost, MatterMail listen an email box and publish all received emails in channels or users in Mattermost.
Install
Download the Latest Version
Usage
-
You need to create an user in Mattermost server and you can use MatterMail icon as profile picture.
-
Get the Team and Channels and check if the user has permission to post in these channels
-
Edit the file config.json
-
Execute the command to put in background
./mattermail > /var/log/mattermail.log 2>&1 &
Migrate configuration
To upgrade the config.json to new version using this command:
./mattermail migrate -c ./config.json > ./new_config.json
Configuration
Minimal configuration:
{
"Directory": "./data/",
"Profiles":[
{
"Name": "Orders",
"Channels": ["#orders"],
"Email":{
"ImapServer": "imap.example.com:143",
"Username": "[email protected]",
"Password": "password"
},
"Mattermost":{
"Server": "https://mattermost.example.com",
"Team": "team1",
"User": "[email protected]",
"Password": "password"
}
}
]
}
Directory
Location where the cache is stored, default value is ./data/
Profiles
You can set multiple profiles using different names
Field | Type | Default | Obrigatory | Information |
---|---|---|---|---|
Name | string | :white_check_mark: | Name of profile, used to log | |
Channels | array | :white_check_mark: | List of channels where the email will be posted. You can use #channel or @username |
|
object | :white_check_mark: | Configuration of Email (details) | ||
Mattermost | object | :white_check_mark: | Configuration of Mattermost (details) | |
MailTemplate | string | Template used to format message to post (details) | ||
LinesToPreview | int | 10 | Number of email lines that will be posted | |
Attachment | boolean | true | Inform if attachments will be posted in Mattermost | |
Disabled | boolean | false | Disable this profile | |
RedirectBySubject | boolean | true | Inform if redirect email by subject (details) | |
Filter | object | Filter used to redirect email (details) |
Email configuration, used to access IMAP server
Field | Type | Default | Obrigatory | Information |
---|---|---|---|---|
ImapServer | string | :white_check_mark: | Address of imap server with port number ex: imap.example.com:143 | |
Username | string | :white_check_mark: | Email address or username used authenticate on email server | |
Password | string | :white_check_mark: | Password used authenticate on email server | |
StartTLS | boolean | false | Enable StartTLS connection if server supports | |
TLSAcceptAllCerts | boolean | false | Accept insecure certificates with TLS connection | |
DisableIdle | boolean | false | Disable imap idle and check email after 1 minute. Used in case of problems |
Mattermost
Mattermost configuration
Field | Type | Default | Obrigatory | Information |
---|---|---|---|---|
Server | string | :white_check_mark: | Address of mattermost server. Please inform protocol and port if its necessary ex: https://mattermost.example.com:8065 | |
Team | string | :white_check_mark: | Team name. You can find teams name by (URL) | |
User | string | :white_check_mark: | User used to authenticate on Mattermos server | |
Password | string | :white_check_mark: | Password used to authenticate on Mattermos server | |
UseAPIv3 | boolean | false | Set to use Mattermost Api V3 |
MailTemplate
This configuration formats email message using markdown to post on Mattermost.
The default configuration is :incoming_envelope: _From: **{{.From}}**_\n>_{{.Subject}}_\n\n{{.Message}}
, in this example when Mattermail receives a message from [email protected]
, with subject Hello world
and message body Hi I'm John
. This email will be formated to:
:incoming*envelope: _From: [email protected]*
Hello world
Hi I'm John
RedirectBySubject
If the option RedirectBySubject
is true
the Mattermail will try to redirect an email and post it using the subject, ex:
Subject | Destination |
---|---|
[#orders] blah | channel orders |
[#orders #info] blah | channel orders and info |
Fwd [#orders][#info] blah | channel orders and info |
[1234#orders] foo | channel orders |
[@john] blah | user john |
[@john #orders] blah | user john and channel orders |
Filter
This option is used to redirect email following the rules.
"Filter": [
/* if subject contains 'Feature' redirect to #feature */
{"Subject":"Feature", "Channels": ["#feature"]},
/* if from contains '[email protected]' and subject contains 'to me' redirect to @test2*/
{"From":"[email protected]", "Subject":"To Me", "Channels": ["@test2"]},
/* if from contains '@companyb.com' redirect to #companyb and @john */
{"From":"@companyb.com", "Channels": ["#companyb", "@john"]} /**/
]
Team/Channel
You can find team and channel name by URL ex:
Sequence that the email will be redirected
Mattermail post the email using this rules:
1 - Try to post using the subject if the option RedirectBySubject
is true
2 - Try to post following the Filter configuration.
3 - Post on channels/users defined on field Channels
in config.json
Options
$ ./mattermail --help
Usage:
mattermail server Starts Mattermail server
mattermail migrate Migrates config.json to new version
For more details execute:
mattermail [command] --help
Building
You need Go to build this project
go get github.com/rodcorsi/mattermail
Mattermail as a service
Using systemd
Considering your installation under /opt/mattermail
, add /etc/systemd/system/mattermail.service
file with the following content:
# mattermail
[Unit]
Description=mattermail server
[Service]
Type=simple
WorkingDirectory=/opt/mattermail
ExecStart=/opt/mattermail/mattermail server -c config.json
Nice=5
[Install]
WantedBy=multi-user.target
Enable service:
systemctl enable mattermail
Start service:
systemctl start mattermail
View status:
systemctl status mattermail
View log:
journalctl -f -u mattermail.service