Il tuo client di posta elettronica ti consente di aggiungere intestazioni personalizzate a livello di codice?
-
08-07-2019 - |
Domanda
Sto lavorando a un progetto anti-spam ( centmail ) che prevede che il mittente utilizzi un plug-in client che aggiunge un'intestazione personalizzata (oltre a una firma, ma la più semplice di quella parte). Il problema generale è aggiungere un'intestazione e-mail alla posta in uscita in cui il contenuto del campo dell'intestazione viene determinato in modo dinamico per ciascun messaggio.
Sorprendentemente, questo non sembra essere possibile in Pine / Alpine. Pine consente di specificare uno script di filtro per la posta in uscita, ma solo il corpo e non le intestazioni lo attraversano. Ovviamente puoi definire intestazioni personalizzate nelle impostazioni di Pine ma non vedo alcun modo per cambiarne dinamicamente il contenuto.
Sarei grato di sapere come farlo in altri client di posta elettronica (Thunderbird, Outlook, Evolution, Mutt, ecc.). E ovviamente se sbaglio su Pine.
Soluzione
Puoi farlo in Eudora .
Puoi farlo a livello di codice in Outlook con un modulo personalizzato .
Puoi farlo in Mozilla da about: config .
Altri suggerimenti
Sebbene non sia un plug-in nel senso più stretto, è possibile creare un server SMTP proxy che modifichi le e-mail - ad es. qualcosa come lo scanner e-mail in uscita di AVG. Ciò avrebbe il vantaggio di lavorare con molti client di posta elettronica; potresti anche creare un plug-in che comunichi con il proxy da un lato e l'interfaccia utente e-mail dall'altro.
Il plug-in Thunderbird Enigmail controlla le intestazioni per la posta in uscita. Quindi questa è una prova dell'esistenza che è possibile in Thunderbird.
Sono d'accordo con Piskvor. Lo implementerei come un server SMTP proxy che produrrebbe una serie di vantaggi:
- Non saresti vincolato a nessun client di posta elettronica e quindi limitato dalle sue API (se presenti)
- Può essere applicato all'estremità del server di posta, pertanto i mal di testa di installazione e distribuzione vengono eliminati
Emacs può farlo a livello di codice. Puoi creare un buffer ( get-buffer-create
), compilarlo con le informazioni di intestazione e chiamare mail-send
non interattivo (impostare mail-interactive su
zero
).
Esempio di contenuto del buffer (intestazione + corpo) da utilizzare con mail-send
:
From: "Toto" <toto@toto.net>
To: somebody@somewhere.net
Subject: Something
BCC: sebastien.rocca-serra@f4-group.com
--text follows this line--
Hello, how are you?
Puoi anche modificare ogni e-mail in uscita (intestazione + corpo) aggiungendo un hook a mail-send-hook
.
Questo è già stato chiesto specificamente su Thunderbird:
La risposta principale contiene il codice per modificare le intestazioni in xul / js semplice.
L'ho scavato dalle vecchie parti di Brain Tunes ad altre cose ...
Penso che l'approccio sia quello di configurare SENDMAIL e farlo tramite script [bash / etc] se capisco correttamente .
File root http://snap.nlc.dcccd.edu/reference/sysadmin/ julian / ewtoc.html
Configurazione SendMail
Dichiarazioni di intestazione http: //snap.nlc.dcccd. edu / riferimento / sysadmin / Julian / CH04 / 061-064.html # Heading22
http: //snap.nlc.dcccd .edu / riferimento / sysadmin / Julian / CH04 / 078-080.html
Il formato delle righe di intestazione è definito dalla linea H. La sintassi di questa linea è
H [c? c mflagsc?] c hnamec: c htemplate
Linee di continuazione in questo le specifiche vengono inserite direttamente nel messaggio in uscita. Il htemplate viene espanso macro prima di esso è inserito nel messaggio. Se la l'espansione è vuota, la riga di intestazione è non incluso. Se i mflags (circondato da punti interrogativi) specificato, almeno uno dei i flag specificati devono essere indicati in definizione mailer per questa intestazione a essere emesso automaticamente. Se uno di queste intestazioni sono nell'input, lo è diretto all'output indipendentemente da queste bandiere.
Linee di intestazione speciali Diverse intestazioni le linee hanno interpretazioni speciali definito dal file di configurazione. Altri hanno interpretazioni incorporate sendmail che non può essere modificato senza cambiare il codice. Il le funzionalità integrate sono descritte in elenco seguente:
• Return-Receipt-To: se questa intestazione viene inviato, un messaggio verrà inviato a qualsiasi nomi specificati quando il finale la consegna è completa. Il mailer deve impostare il flag l (consegna locale) nel descrittore mailer. • Errori-A: se si verificano errori ovunque durante l'elaborazione, questa intestazione invia messaggi di errore ai nomi elencati piuttosto che al mittente. Usa questo riga di intestazione per le mailing list in modo che gli errori vengono restituiti all'elenco amministratore. • A: se un messaggio arriva senza i destinatari elencati in il messaggio (in un A :, CC: o BCC: linea), sendmail aggiunge un Apparentemente a: riga di intestazione per ciascun destinatario specificato sul comando sendmail linea.
Mi viene in mente che, poiché pine è open source, se questa funzionalità è importante per te per questo programma, potresti provare a contribuire al progetto per aggiungere la funzionalità.
Una cosa che potresti voler esaminare è l'uso di pseudo-intestazioni anziché di intestazioni. Dato che pine / alpine ti consente di specificare un programma di filtro per il passaggio dell'email, puoi aggiungere l'intestazione al corpo all'inizio, che dovrebbe essere abbastanza facile da elaborare. Non sono sicuro che si adatterà esattamente ai tuoi scopi, dato che non so quale tipo di sistema stai mettendo insieme.
Ho imparato a conoscere le pseudo-intestazioni attraverso il loro uso nel Debian BTS System .
Rispondendo alla domanda, utilizzo GMail e non è possibile modificare le intestazioni a livello di codice (sarei interessato a vedere una webmail che ti consente). non puoi nemmeno filtrare su intestazioni personalizzate come X-List, è abbastanza fastidioso.
Qualcosa non va nell'idea generale di collegare client di posta per intestazioni personalizzate.
C'è solo per molti clienti là fuori. Comprese versioni diverse, su sistemi diversi.
L'aspetto positivo del formato header + body è che tutti i dati specifici dell'utente, del server e del routing sono nascosti all'utente. E questa idea è importante da seguire. Non penso che l'utente dovrebbe essere disturbato con alcune intestazioni personalizzate relative al server.
Inoltre, i dati che si sta tentando di aggiungere sono, in effetti, dati specifici dell'utente. Come firma. Verifica la validità del mittente. Non c'è motivo di nasconderlo all'utente.
La firma dei dati di posta elettronica è un processo ben noto, utilizzato da PGP, SMIME, ecc. Probabilmente ci sono più client di posta che consentono tali azioni (verifica e firma da programmi esterni) che consentire di aggiungere o modificare intestazioni di posta personalizzate.
Le intestazioni personalizzate devono essere modificate dai server di posta; dati dell'utente dai client di posta.
Penso che dovresti inserire i tuoi dati nel messaggio o nella parte del messaggio.
Un modo per farlo funzionare in Pine senza modificare Pine stesso o modificare il server di posta è di far consegnare pine tramite un programma a riga di comando (tradizionalmente / usr / sbin / sendmail o simili) e fare in modo che il programma chiamato sia un wrapper per il programma originale. Quindi puoi aggiungere qualsiasi intestazione ti serva.
È brutto, certamente non si ridimensionerà per un'intera base di utenti.
Per tutti i client di posta che supportano l'utilizzo di un editor esterno, potresti avere uno script che aggiunge un'intestazione specifica al modello che viene inviato all'editor. In mutt , c'è un parametro di configurazione chiamato edit_headers
che aggiunge un insieme comune di intestazioni in modo che sia facile aggiungere il tuo. C'è anche un altro parametro chiamato my_hdr
che potrebbe essere utilizzato. Mutt supporta la notazione `backtick` per eseguire comandi esterni.
Sarebbe meglio poter specificare il proprio modello ma non è ancora possibile.