Artifact [3481cdb912]
Logged in as anonymous

Artifact 3481cdb912737ee1cbc32f2bea6feccb0ff47a519c5ca697ae86680fe1cac796:


smtp2tg

SMTP-to-Telegram gateway. Receives emails via SMTP and forwards them to Telegram chats.


Installation

From source

git clone https://github.com/kworr/smtp2tg
cd smtp2tg
cargo build --release

Configuration

  1. Create smtp2tg.toml (see smtp2tg.toml.example for reference).
  2. Get a Telegram Bot Token from @BotFather.
  3. Get your chat ID (use @getidsbot or debug mode in Telegram client).

Example configuration

api_key = "replace-with-your-telegram-bot-token"
api_gateway = "https://api.telegram.org"
listen_on = "127.0.0.1:1025"
fields = ["date", "from", "subject"]
domains = ["example.com", "localhost"]

default = 0

[recipients]
"admin@example.com" = 12345678
"alerts@example.com" = -10012345678

All recipients are internally lowercased, so UserName equals username.


Usage

Run

./smtp2tg -c /path/to/smtp2tg.toml

CLI arguments

Argument Description Example
-h, --help Show help smtp2tg --help
-c, --config Path to config file smtp2tg -c config.toml

Security

Important

Config file permissions

Set file permissions to 0600 (owner read/write only):

chmod 600 smtp2tg.toml


How it works

  1. A client (e.g., Postfix) sends an email to listen_on (e.g., 127.0.0.1:1025).
  2. smtp2tg parses the email and converts it to a Telegram message.
  3. The message is sent to the specified chat (or default if address is unknown).

Example: Email → Telegram

Incoming email: ```text From: user@example.com To: admin@example.com Subject: Test

Hello, world! ```

Telegram message:

<blockquote expandable>
<u><i>Subject:</i></u> <code>Test</code>
<u><i>From:</i></u> <code>user@example.com</code>
<u><i>Date:</i></u> <code>Mon, 01 Jan 2024 12:00:00 +0000</code>
</blockquote>
<pre>Hello, world!</pre>