Il tuo client di posta elettronica ti consente di aggiungere intestazioni personalizzate a livello di codice?

StackOverflow https://stackoverflow.com/questions/296603

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.

È stato utile?

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:

  1. Non saresti vincolato a nessun client di posta elettronica e quindi limitato dalle sue API (se presenti)
  2. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top