Skript kontroluje složku /var/vmail kam se v OS Debian Linux ukládají na server příchozí Dovecot e-mailové zpravy. Po tom co se ve složce objeví nová zpráva skript díky přednastavenému Telegram token a uživatelskému ID um’pomocí curl odeslat notifikaci. Jedná se o Dovecot 2.4.1 instalovaný na serveru Debian 13
Skript uložíme do souboru monitor_vmail.sh v ceste /usr/local/bin/. Proměnné WATCH_DIR, BOT_TOKEN a CHAT_ID je nutné upravit dle vaší situace!
nano /usr/local/bin/monitor_vmail.sh
#!/usr/bin/env bash
set -euo pipefail
# ========== KONFIGURÁCIA Dovecot Path =============
WATCH_DIR="/var/vmail/mail.sk/info/Maildir/new"
LOGFILE="/var/log/mojmail-maildir-watch.log"
# Telegram
BOT_TOKEN="123456789:AAEqDHawGXKXBYfDEdeBOSOEAA04Ot26Uyk"
CHAT_ID="123456789"
MAILBOX_NAME="môj@mail.sk"
# ================== KONTROLY ==================
if [[ ! -d "$WATCH_DIR" ]]; then
echo "Chyba: adresár $WATCH_DIR neexistuje" >&2
exit 1
fi
command -v inotifywait >/dev/null || {
echo "Chyba: inotify-tools nie sú nainštalované" >&2
exit 1
}
command -v curl >/dev/null || {
echo "Chyba: curl nie je nainštalovaný" >&2
exit 1
}
# ================== FUNKCIE ==================
send_telegram() {
local text="$1"
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
--data-urlencode text="$text" \
-d disable_web_page_preview=true \
-d parse_mode="Markdown" \
> /dev/null
}
log() {
echo "$(date '+%F %T') $*" >> "$LOGFILE"
}
# ================== ŠTART ==================
log "Spúšťam sledovanie Maildir: $WATCH_DIR"
send_telegram "Mail watcher spustený
Schránka: $MAILBOX_NAME"
# ================== SLEDOVANIE ==================
inotifywait -m \
--quiet \
--event create,moved_to \
--format '%f' \
"$WATCH_DIR" |
while IFS= read -r filename; do
FILE="$WATCH_DIR/$filename"
# istota, že ide o súbor
[[ -f "$FILE" ]] || continue
# vytiahneme hlavičky (bez prerušenia)
SUBJECT=$(sed -n 's/^Subject:[[:space:]]*//p' "$FILE" | head -n1 || true)
FROM=$(sed -n 's/^From:[[:space:]]*//p' "$FILE" | head -n1 || true)
# BODY_SNIPPET=$(awk '/^$/ {p=1; next} p {print}' "$FILE" | tr -d '\n' | awk '{for(i=1;i<=10;i++) printf "%s ", $i; print "..."}')
BODY_SNIPPET=$(sed '1,/^$/d' "$FILE" | tr -d '\n\r' | sed -E 's/^(([^ ]+ +){15}[^ ]+).*/\1.../')
SUBJECT=${SUBJECT:-"(bez predmetu)"}
FROM=${FROM:-"(neznámy odosielateľ)"}
BODY_SNIPPET=${BODY_SNIPPET:-"(telo bez textu)"}
MSG="*Nová MÔJMAIL správa*
Od: $FROM
Predmet: $SUBJECT
Text: $BODY_SNIPPET"
log "Nový mail: $filename | $SUBJECT"
send_telegram "$MSG"
done
Systemd
nano /etc/systemd/system/vmail-notifier.service
[Unit]
Description=Vmail Telegram Notifier
After=network.target
[Service]
# Spúšťame pod rootom, aby sme mohli čítať /var/vmail
User=root
Group=root
ExecStart=/usr/local/bin/monitor_vmail.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Roundcube
Chyba vmail opravnění uživatele při použití souboru dovecot-sql.conf (/etc/dovecot/dovecot-sql.conf) například WEB Mail UI Roundcube lze vyřešit změnou vlastníka z root:root nebo root:dovecot na
chown :vmail /etc/dovecot/dovecot-sql.conf
chmod g+r /etc/dovecot/dovecot-sql.conf
Použité zdroje: AI
