summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGab <24553253+gabrix73@users.noreply.github.com>2026-06-29 13:31:49 +0200
committerGab <24553253+gabrix73@users.noreply.github.com>2026-06-29 13:31:49 +0200
commitbfd810a88ef7c13d99f50a14b0581b74ab300fb7 (patch)
tree3783a32b55332ed95cbf0306ba378272cb517725
parent1d1d06c025be8b16a3535ecceffc26fe303977db (diff)
downloadm2usenet-and-mail2news-bfd810a88ef7c13d99f50a14b0581b74ab300fb7.tar.gz
m2usenet-and-mail2news-bfd810a88ef7c13d99f50a14b0581b74ab300fb7.tar.xz
m2usenet-and-mail2news-bfd810a88ef7c13d99f50a14b0581b74ab300fb7.zip
Sync mail2news-wrapper.sh with live: newsgroup extraction + Face header passthrough
-rw-r--r--mail2news-wrapper.sh83
1 files changed, 56 insertions, 27 deletions
diff --git a/mail2news-wrapper.sh b/mail2news-wrapper.sh
index 12a64ab..b20eeee 100644
--- a/mail2news-wrapper.sh
+++ b/mail2news-wrapper.sh
@@ -1,51 +1,80 @@
#!/bin/bash
+# mail2news-wrapper.sh - Privacy version
-# Log più dettagliato
-exec > >(tee -a /tmp/mail2news-wrapper.log) 2>&1
-echo "$(date): Wrapper script avviato"
-
-# Crea una directory temporanea per l'input e output
TEMP_DIR=$(mktemp -d)
RAW_EMAIL="$TEMP_DIR/raw_email.txt"
CLEANED_EMAIL="$TEMP_DIR/clean_email.txt"
-# Leggi l'email da stdin e salvala
+# Leggi l'email da stdin
cat > "$RAW_EMAIL"
-echo "$(date): Email salvata in $RAW_EMAIL"
-# Pre-elaborazione per creare un articolo valido
-echo "$(date): Pre-elaborazione dell'email"
+# Rimuovi la riga mbox "From " se presente
+sed -i '1{/^From /d;}' "$RAW_EMAIL"
+
+# === ESTRAI NEWSGROUP ===
+NEWSGROUP=""
+
+# Metodo 1: da X-Original-To header
+ORIG_TO=$(grep -i "^X-Original-To:" "$RAW_EMAIL" | head -1)
+if [ -n "$ORIG_TO" ]; then
+ NEWSGROUP=$(echo "$ORIG_TO" | sed -n 's/.*mail2news-[0-9]*-\([^@]*\)@.*/\1/p')
+fi
+
+# Metodo 2: da Delivered-To header
+if [ -z "$NEWSGROUP" ]; then
+ DELIVERED_TO=$(grep -i "^Delivered-To:" "$RAW_EMAIL" | head -1)
+ if [ -n "$DELIVERED_TO" ]; then
+ NEWSGROUP=$(echo "$DELIVERED_TO" | sed -n 's/.*mail2news-[0-9]*-\([^@]*\)@.*/\1/p')
+ fi
+fi
+
+# Metodo 3: dall'header Newsgroups già presente
+if [ -z "$NEWSGROUP" ]; then
+ NEWSGROUP=$(grep -i "^Newsgroups:" "$RAW_EMAIL" | head -1 | sed 's/^[Nn]ewsgroups:[[:space:]]*//')
+fi
+
+# Metodo 4: da argomento passato da Postfix ($1)
+if [ -z "$NEWSGROUP" ] && [ -n "$1" ]; then
+ NEWSGROUP=$(echo "$1" | sed -n 's/.*mail2news-[0-9]*-\([^@]*\)@.*/\1/p')
+fi
+
+# Se ancora non abbiamo il newsgroup, errore
+if [ -z "$NEWSGROUP" ]; then
+ rm -rf "$TEMP_DIR"
+ exit 1
+fi
-# Estrai le intestazioni necessarie dalla mail originale
+# === COSTRUISCI L'EMAIL PULITA ===
grep -i "^From:" "$RAW_EMAIL" > "$CLEANED_EMAIL" || echo "From: anonymous@mail2news.tcpreset.net" > "$CLEANED_EMAIL"
grep -i "^Subject:" "$RAW_EMAIL" >> "$CLEANED_EMAIL" || echo "Subject: (No Subject)" >> "$CLEANED_EMAIL"
-grep -i "^To:" "$RAW_EMAIL" | grep "mail2news" > /dev/null && \
- grep -i "^To:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
-grep -i "^Newsgroups:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
+
+# Header Newsgroups
+echo "Newsgroups: $NEWSGROUP" >> "$CLEANED_EMAIL"
+
+# Header To
+grep -i "^To:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
+
grep -i "^Message-ID:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
-# Preserva gli header per il threading
grep -i "^References:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
grep -i "^In-Reply-To:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
+
+# Header X-*
grep -i "^X-Ed25519-Sig:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
grep -i "^X-Ed25519-Pub:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
grep -i "^X-No-Archive:" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
-grep -i "^X-Hashcash" "$RAW_EMAIL" >> "$CLEANED_EMAIL"
-echo "" >> "$CLEANED_EMAIL" # Linea vuota tra header e body
-# Estrai il corpo della mail (tutto ciò che segue la prima riga vuota)
-sed -n '/^$/,$p' "$RAW_EMAIL" | tail -n +2 >> "$CLEANED_EMAIL"
+# Header Face (VFACE identicon) - preserve folded continuation lines
+awk '/^[Ff]ace:/{f=1;print;next} f==1 && /^[ \t]/{print;next} {f=0}' "$RAW_EMAIL" >> "$CLEANED_EMAIL"
+
+echo "" >> "$CLEANED_EMAIL"
-# Log dell'articolo preparato
-echo "== ARTICOLO PREPARATO PER NNTP =="
-cat "$CLEANED_EMAIL"
-echo "== FINE ARTICOLO =="
+# Estrai il corpo
+sed -n '/^$/,$p' "$RAW_EMAIL" | tail -n +2 >> "$CLEANED_EMAIL"
-# Esegui mail2news con l'email prepulita
-echo "$(date): Esecuzione mail2news"
+# Esegui mail2news
sudo -u mail2news /usr/local/bin/mail2news < "$CLEANED_EMAIL" 2>&1
RESULT=$?
-echo "$(date): mail2news terminato con codice $RESULT"
# Pulisci
-rm -f "$RAW_EMAIL" "$CLEANED_EMAIL"
-rmdir "$TEMP_DIR"
+srm -rf "$TEMP_DIR"
+exit $RESULT