diff options
| author | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-06-29 13:31:49 +0200 |
|---|---|---|
| committer | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-06-29 13:31:49 +0200 |
| commit | bfd810a88ef7c13d99f50a14b0581b74ab300fb7 (patch) | |
| tree | 3783a32b55332ed95cbf0306ba378272cb517725 | |
| parent | 1d1d06c025be8b16a3535ecceffc26fe303977db (diff) | |
| download | m2usenet-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.sh | 83 |
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 |
