AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 413343
Accepted
Omnifarious
Omnifarious
Asked: 2017-12-28 15:36:57 +0800 CST2017-12-28 15:36:57 +0800 CST 2017-12-28 15:36:57 +0800 CST

Como configuro o Postfix para atender a esses requisitos?

  • 772

Estou tendo dificuldade em descobrir como criar uma configuração específica do Postfix para uma instância do Postfix que será executada dentro de um contêiner.

Aqui estão meus requisitos:

  1. Não permitir a retransmissão, a menos que o remetente seja de um pequeno conjunto de endereços IP ou o remetente seja um programa local (embora como permitir que um programa fora do contêiner enfileire mensagens para o Postfix em execução no contêiner seja um enigma interessante).
  2. Execute todas as mensagens recebidas de endereços IP não retransmissores por meio de um pequeno conjunto de verificações e recuse a entrega se não passar em todas:
    1. Se o IP do remetente estiver em um RBL especificado, rejeite-o.
    2. Lista cinza de IPs de entrada que eu não aceitei antes.
    3. Se a parte do usuário do endereço de destino não corresponder a nenhum de um pequeno conjunto de regexps, rejeite-o.
    4. Se o e-mail não passar por algumas verificações simples e rápidas do spamassass, rejeite-o.
  3. Para todas as entregas locais, use um programa para determinar a disposição final. Este programa terá um dos quatro resultados.
    1. Entregue em um endereço local diferente (Delivered-To será atualizado para fornecer proteção de loop e o programa de entrega local será executado novamente).
    2. Encaminhe para um endereço remoto (como uma conta do Gmail ou algo assim).
    3. Entregue em um diretório Maildir local pertencente a um usuário específico (sempre o mesmo usuário por enquanto).

Eu só preciso lidar com e-mails endereçados a um domínio. Em algum momento, gostaria de adicionar um novo domínio no qual todos os e-mails sejam manipulados pelo Mailman, embora novamente seja bom rejeitar qualquer e-mail para um endereço de lista inexistente antes da entrega.

Existem indicações de documentos que especificam como atingir um ou mais desses objetivos? O manual do Postfix para local e transporte é muito obtuso para ser realmente útil. Seria bom ter um documento especificando o fluxo de correspondência pelo sistema e como ele pode ser alterado em vários pontos.

Além disso, embora eu possa escrever meu próprio programa para entregar a uma caixa de correio Maildir, fazer isso perfeitamente corretamente é bastante complicado, e eu gostaria de evitá-lo se possível e ter a parte do Postfix que já sabe como fazer isso lidar isto.

O Postfix será executado em um contêiner. O diretório da fila e os diretórios Maildir serão sistemas de arquivos persistentes montados dentro do contêiner. Presumo que todos os programas necessários para implementar o que mencionei antes (postgrey, spamassassin, o que determina como o correio local será descartado) também serão executados no mesmo contêiner. Posso ter que providenciar para que o estado que postgrey e spamassassin mantenha também seja persistente nas invocações de contêiner.

Eu estarei usando mutt para ler o e-mail. Atualmente, serei a única pessoa para quem a correspondência será entregue localmente, embora tenha vários diretórios Maildir diferentes para os quais as coisas serão entregues. Provavelmente estarei executando o Dovecot no mesmo sistema (talvez em um contêiner em um contêiner diferente) para fazer isso.

Além disso, tenho algumas centenas de endereços de destinatários locais, a maioria dos quais desejo tratar de maneira idêntica. Todos eles se encaixam em um padrão, mas alguns que se encaixam nesse padrão precisam ser tratados de maneira diferente dos outros. Eu sei qual de antemão sem referência ao conteúdo do e-mail, então posso criar padrões mais específicos para eles.

linux postfix
  • 1 1 respostas
  • 160 Views

1 respostas

  • Voted
  1. Best Answer
    RubberStamp
    2017-12-28T16:07:08+08:002017-12-28T16:07:08+08:00

    Muitos dos itens podem ser abordados na smtpd_client_restrictionsseção de Parâmetros de configuração do Postfix

    Aqui estão minhas restrições de cliente:

    smtpd_client_restrictions = permit_mynetworks 
                                permit_sasl_authenticated
                                check_helo_access 
                                hash:/etc/postfix/helo_access
                                check_client_access 
                                hash:/etc/postfix/client_checks 
                                reject_unauth_destination
                                check_policy_service unix:private/policy-spf
                                reject_rbl_client cbl.abuseat.org
                                reject_rbl_client pbl.spamhaus.org
                                reject_rbl_client sbl.spamhaus.org
                                reject_rbl_client bl.blocklist.de
                                reject_unknown_client
    

    Essa configuração remove cerca de 99% dos emails de spam recebidos. A lista é uma lista ordenada. Cada verificação passa para a próxima. Quando ocorre uma falha, o e-mail é rejeitado. Descobri que precisava criar algumas exceções às minhas regras e elas estão contidas no client_checksarquivo db.

    Este arquivo de exceção se parece com isto:

    cat /etc/postfix/client_checks
    
    ip.address.123.456     OK
    ip.address.789.123     REJECT
    

    Depois de criar o arquivo colunar de texto simples, você precisa emitir o postmapcomando para que o arquivo seja gerado como um arquivo db.

    postmap /etc/postfix/client_checks
    

    As regras de encaminhamento para um sistema que possui um ou dois destinatários devem ser bastante fáceis de configurar por meio de aliases.

    man aliases
    man postaliases
    

    O formato e o procedimento do arquivo são praticamente os mesmos. Insira os aliases linha por linha e emita o postaliasescomando para criar o banco de dados.

    Para aliases mais complicados, expressões regulares podem ser incluídas em sua tabela de alias:

    man regexp_table
    ...
    EXAMPLE SMTPD ACCESS MAP
       # Disallow sender-specified routing. This is a must if you relay mail
       # for other domains.
       /[%!@].*[%!@]/       550 Sender-specified routing rejected
    
       # Postmaster is OK, that way they can talk to us about how to fix
       # their problem.
       /^postmaster@/       OK
    
       # Protect your outgoing majordomo exploders
       if !/^owner-/
       /^(.*)-outgoing@(.*)$/  550 Use ${1}@${2} instead
       endif
    
    • 2

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve