Estou procurando substituir nosso uso atual de um provedor SMTP externo por uma instalação interna. Deve lidar com as seguintes situações:
Certos endereços devem ser encaminhados para endereços do Gmail; gostaríamos de continuar a usar o Gmail como nossa interface de e-mail principal.
Outros endereços devem estar disponíveis como caixas de correio pop/imap.
Outros endereços serão tratados de forma programática: eles iniciarão várias tarefas, serão registrados, etc. Esses endereços devem iniciar um processo para lidar com os endereços de e-mail ou devem ser armazenados em um formato facilmente processável.
Também deve ser facilmente configurável com chaves de domínio, spf e qualquer outra coisa necessária para permitir a entrega de e-mail.
Eu usei o sendmail no passado distante. Parece que postfix e exim são as opções recomendadas atualmente. Minha principal dúvida é: qual a melhor escolha e configuração para o encaminhamento dos endereços para o Gmail e para o acesso programático? O procmail ainda é o caminho a seguir ou existem opções melhores atualmente?
Estamos usando servidores Linux/ubuntu.
Responder1
O Postfix é sólido, bem suportado e fácil de configurar. Todas as coisas que você descreve são bastante rotineiras.
- Encaminhamento: use mapas virtual_alias
- Caixas de correio POP/IMAP: entrega local, use algo como Dovecot para seu servidor POP/IMAP
- Coisas programáticas: se você quer dizer que envia o e-mail para um script, isso é feito em /etc/aliases. Para "facilmente processável", você tem o formato mbox e Maildir, é tudo padrão.
- Chaves de domínio/SPF: o SPF é feito no DNS. As chaves de domínio são fáceis de configurar como um proxy milter ou SMTP.
Responder2
para o material programático, você deve estar ciente de qual UID os programas/scripts serão executados.
Para o postfix, por exemplo, os scripts executados a partir de /etc/aliases (ou qualquer outro arquivo de aliases de propriedade do root) serão executados como o usuário 'nobody'.
o postfix tem a capacidade de ter vários arquivos de aliases e (aqui está a parte boa) os programas executados a partir de um arquivo de aliases serão executados como o usuário proprietário desse arquivo (exceto root - como mencionado antes, os arquivos de aliases pertencentes ao root são executados como ninguém ).
se você precisar executar um script do mail como root, a maneira mais fácil (se você tiver o sudo instalado) é configurar o sudo para permitir que 'ninguém' o execute como root sem uma senha e execute-o a partir de um script wrapper que é executado isso com sudo.
NOTA: sempre que acionar scripts de e-mail, você deve lembrar que os dados (ou seja, o e-mail) são de uma fonte não confiável (a Internet)... portanto, é extremamente inseguro usar os dados do corpo ou do cabeçalho como argumentos para comandos executados pelo script. este é basicamente o mesmo problema que confiar nos dados fornecidos pelo usuário em um script CGI - apenas não faça isso. por exemplo, considere o que um script mal escrito poderia fazer se os dados fornecidos pelo usuário fossem algo como "...innocuousdatahere...; rm -rf /". você pode pensar que seria fácil verificar coisas óbvias, como ponto e vírgula, e retirá-las, mas há muitas coisas não óbvias que você também precisa verificar e você estaria apenas se preparando para um fracasso, já que é improvável que você pense ou pegue todos eles. muito mais seguro eliminar totalmente o risco de segurança simplesmente não confiando nos dados fornecidos pelo usuário.
isso é importante, não importa qual UID o script será executado, mas é especialmente importante quando/se estiver sendo executado como root.
Por fim, para responder a uma de suas perguntas diretas, o procmail ainda é uma ferramenta útil para o que você deseja fazer. assim como o maildrop e outros programas semelhantes. pense no procmail etc como ferramentas especializadas para analisar corpo e cabeçalhos para tomar decisões sobre o que fazer, para que você não precise ter todo esse código de análise em seus scripts. escreva seu script para fazer seu trabalho e use o procmail para decidir quando o script deve ser executado. por exemplo, você pode criar um novo usuário chamado, digamos, 'mailjobs', que possui seu próprio diretório inicial e arquivo .procmailrc. em seguida, crie aliases que encaminhem mensagens para esse usuário. O .procmailrc do mailjobs verificaria então o cabeçalho X-Original-To para decidir quais scripts serão executados.
Responder3
Tanto o exim quanto o postfix são mais do que capazes de fazer o que você precisa. O melhor conselho é escolher aquele que é mais fácil de usar e/ou com o qual você está mais familiarizado.
Quanto a lidar com encaminhamentos para o Gmail e scripts, a melhor maneira de fazer isso é com umarquivo de aliases globais(geralmente mantido em /etc/aliases ou /etc/mail/aliases).