O fluxo típico é um pouco de entrega. Sua pergunta está marcada com procmail então presumo que uma solução de Procmail é aceitável.
Você não deve precisar de nenhum registro MX ou outras travessuras adicionais. O Sendmail (ou qualquer MTA moderno; eu recomendaria o Postfix se você não é particularmente casado com o Sendmail por motivos legados) pode executar um script em uma mensagem recebida de forma bastante trivial.
Quando uma mensagem é aceita para entrega, o MDA (no seu caso, o Sendmail) procura por qualquer gancho de cliente, como um arquivo .forward
. Se um for encontrado, o arquivo é analisado e qualquer pipeline no arquivo é executado. É assim que o Procmail é tipicamente invocado em sistemas legados (embora, mais recentemente, uma receita enlatada para ler o .procmailrc
do usuário e invocar o Procmail, caso um seja encontrado, faça parte do conjunto de recursos padrão do Sendmail).
Em vez do Procmail, você pode executar um script próprio; ou você pode executar o script a partir do seu .procmailrc
(o que é benéfico porque o Procmail cuida de vários cenários de erros irritantes).
:0
| /path/to/script
Agora, o Procmail abrirá /path/to/script
com a mensagem como entrada padrão e assumirá que o script cuida de processá-lo (entregá-lo e / ou analisá-lo e descartá-lo).
Adicione um sinalizador :c
se quiser que o Procmail também salve em $DEFAULT
:
:0c
| /path/to/script
Talvez adicione o endereço do destinatário como parâmetro ao script:
ADDR='formail -rtzxTo:'
:0c
| /path/to/script "$ADDR"
Seu script pode ser bem simples; Deixo os detalhes do banco de dados para você e mostro um script Perl simples para registrar cada mensagem recebida em um arquivo.
#!/usr/bin/perl
use strict;
use warnings;
open (DB, ">>", "/path/to/file.db") or die "Complication: $!";
print DB "Correspondent: $ARGV[1]\n";
while (<>) {
print DB;
}
close DB;
Isso é ideal para e-mails recebidos , mas a maneira simples e direta de também registrar suas comunicações de saída é simplesmente Bcc: o endereço da conta nas mensagens de saída. Por outro lado, se você usar uma interface da Web para as interações, poderá escrever os scripts da Web, gerar um email e enviá-lo e usar o Procmail (ou algo similar) somente para a parte de entrada da conversa. Isso simplificaria um pouco o sistema, à custa de sacrificar a possibilidade de usar o sistema simplesmente escrevendo e-mails, como seria natural desse tipo de sistema.
O script Perl acima é bastante simples - e o Procmail é versátil o suficiente - que você poderia fazer tudo isso do seu .procmailrc
, mas para o processamento real do banco de dados, você precisará de um pequeno script externo em qualquer evento. / p>