Categorygithub.com/factorysh/minasan
modulepackage
0.9.4
Repository: https://github.com/factorysh/minasan.git
Documentation: pkg.go.dev

# README

皆さん

Build Status

Minasan is a SMTP server, linked to a Gitlab instance.

When you send a mail to user {group}.{project}, every gitlab's users of this project, with higher level than observator receive the mail.

Big picture

        +---------+    +------------+
mail -> | Minasan | -> | SMTP Relay +--+-> Alice
        +---+-----+    +------------+  |
            | REST                     +-> Bob
            v                          |
        +---------+                    +-> Charly
        | Gitlab  |
        +---------+

Minasan doesn't send mails directly to users, nobody does that, but uses a relay, something like Postfix, that handle greylist, bounce, reputation and all that voodoo dances.

Minasan uses Gitlab REST API, with a private token. Great for using, boring for testing. Gitlab REST API doesn't expose user + project = ☆, what a pity.

Demo time

You need Docker, golang build tools, a Gitlab instance with sufficient privileges.

Build

make build

The application is here : bin/minasan

Launch mailhog

make mailhog

The mailhog web interface is here : http://127.0.0.1:8025

You need a config file (or some ENVs, or some cli flags)

---
gitlab_private_token: shmurtz
gitlab_domain: gitlab.example.com
smtp_out: 127.0.0.1:1025
smtp_domain: example.com
./bin/minasan -c config.yml

Send some mails

./debug_client.py [email protected]

Usage

Minasan uses go-guerilla, viper and cobra

Go-guerilla receives and routes incoming mails, Cobra provides complex documented CLI options, Viper handles ENV and configuration files.

$ ./bin/minasan -h
Send mail to gitlab projects

Usage:
  minasan [command]

Available Commands:
  gitlab      Ask gitlab wich mails are linked to a specific project
  help        Help about any command
  serve       Listen as a SMTP server

Flags:
  -c, --config string                 Config file
  -g, --gitlab_domain string          Gitlab domain (default "gitlab.example.com")
  -t, --gitlab_private_token string   Gitlab private token
  -h, --help                          help for minasan

Use "minasan [command] --help" for more information about a command.

And for the serve command:

./bin/minasan serve -h
Listen as a SMTP server

Usage:
  minasan serve [flags]

Flags:
  -h, --help                     help for serve
  -H, --metrics_address string   Prometheus probe listening address (default "127.0.0.1:8125")
  -d, --smtp_domain string       SMTP domain (default "gitlab.example.com")
  -i, --smtp_in string           SMTP input service (default "127.0.0.1:2525")
  -o, --smtp_out string          SMTP relay (default "127.0.0.1:25")

Global Flags:
  -c, --config string                 Config file
  -g, --gitlab_domain string          Gitlab domain (default "gitlab.example.com")
  -t, --gitlab_private_token string   Gitlab private token

API

Minasan is a simple SMTP server, unauthenticated.

Minasan 127.0.0.1:2525 and talks SMTP.

You send a mail to {group}.{project}@{domain}. domain is the -d option, an arbitrary name, go-guerilla loves routing, and a domain is mandatory.

Licence

3 terms BSD Licence. ©2018 Mathieu Lecarme.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author