Configurações ideais para o Postfix e otimização de um script de entrega personalizado em um VPS

3

Então eu tenho o Postfix + saslauthd + Courier-IMAP implantado em um Linode 1080 VPS. Somos uma empresa pequena, temos cerca de 30 contas (eu uso usuários físicos * nix por conveniência + Maildirs, veja mais adiante), mas fazemos uso extensivo do recurso de pastas compartilhadas do Courier (para várias contas) com um script personalizado I escreveu em Ruby. Ele filtra e-mails por meio do Spamassassin, lê um arquivo YAML com algumas regras e realiza várias verificações para ver onde arquivar o e-mail em nossa estrutura complexa. Maildirs e usuários phyiscais me dão a flexibilidade que eu preciso para isso.

O e-mail é recebido, depois é passado para o meu script, que é definido no arquivo .forward do usuário em seu diretório pessoal.

Em suma, esse script demora cerca de 2 segundos para ser concluído. Agora, não temos um volume de e-mail relativamente alto (eu estimo cerca de 30 a 50 e-mails por hora), mas estou procurando maneiras de agilizar isso, também garanta que a carga de e-mails fique mais alta '), nosso servidor não é martelado de repente na memória, etc. Minhas perguntas são:

  1. Qual é a maneira de filtrar e-mails através do daemon spamassassin (em vez de lançar o aplicativo sempre que um e-mail é recebido) antes de ser passado para o meu script? Acho que é uma má prática fazer isso do jeito que eu faço agora.
  2. Existe uma maneira de limitar quantos e-mails o postfix passa para o meu script ao mesmo tempo? Eu não quero acabar tendo 10 instâncias do meu script sendo executadas ao mesmo tempo.
  3. Como eu poderia transformar meu script em um daemon? Isso tornaria as coisas mais rápidas?

Obrigado antecipadamente.

P.S. Emails (well, / home) são armazenados em uma partição XFS separada montada com noatime.

    
por KTamas 18.05.2009 / 19:16

1 resposta

2

Qual é a maneira de filtrar e-mails através do daemon spamassassin (em vez de lançar o aplicativo sempre que um e-mail é recebido) antes de ser passado para o meu script? Acho que é uma má prática fazer isso do jeito que eu faço agora.

Veja amavisd-new , que está escrito em perl. Ele fará o que você está procurando, integra-se em nível de rede (caso deseje) e também oferece verificação antivírus. A maioria das principais distribuições Linux fornece como um pacote pré-construído. A única coisa que você precisa se preocupar é que algumas das distros usarão uma versão obsoleta que tem um bug ocasional. A maioria desses bugs fará com que o amavis ceda ou termine; então, se são, digamos, 3 versões mais antigas do que o site oficial, eu consideraria seriamente gerenciar esse pacote manualmente.

Existe uma maneira de limitar quantos e-mails o postfix passa ao meu script ao mesmo tempo? Eu não quero ter 10 instâncias do meu script sendo executadas ao mesmo tempo.

Você está falando sobre limitação de taxa. Dado o tamanho "pequeno" do servidor, eu definiria o próprio limitador de taxa do postfix para algo como 3-6 e-mails por minuto, em vez de configurá-lo no lado da digitalização. Se você tentar aceitar a entrega de tudo, uma tempestade de spam irá simplesmente entupir suas filas, e você acabará com um backlog de qualquer maneira.

Como eu poderia transformar meu script em um daemon? Isso tornaria as coisas mais rápidas?

Toneladas! Não posso ajudá-lo a esse respeito, mas ter seu script pré-lançado eliminaria uma sobrecarga significativa.

    
por 18.05.2009 / 21:04