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 / server / Perguntas / 1161859
Accepted
user10709800
user10709800
Asked: 2024-07-02 04:02:01 +0800 CST2024-07-02 04:02:01 +0800 CST 2024-07-02 04:02:01 +0800 CST

Como posso entregar mensagens recebidas com base no domínio do destinatário com Postfix?

  • 772

Há várias semanas que estou procurando uma resposta para o meu problema atual, por isso estou perguntando aqui na esperança de que alguém possa lançar alguma luz ou me indicar a direção certa.

Estou tentando configurar o Postfix de forma que:

  1. A correspondência recebida [email protected]é entregue em /some/custom/MailDir/.
  2. A correspondência recebida [email protected]é entregue em /different/custom/MailDir/.
  3. O correio de saída pode ser enviado de qualquer usuário/domínio.
  4. [email protected]e [email protected]deve ter Maildirs personalizados separados, ou seja, /custom/user3/domain1/mail//diferente/user3/domain2/mail/`

Não consegui encontrar uma explicação clara de como conseguir isso online.

Até agora, como cada domínio requer um nome de caminho de diretório personalizado, acredito que precisarei usar várias instâncias do postfix. Eu estive investigando postmulti. Tenho 2 instâncias do postfix em execução, usando o postmulti, mas não está claro para mim como atingir meus objetivos acima usando o postmulti.

Estou pensando que possivelmente preciso ter uma única instância escutando mensagens externas. Com base no endereço do destinatário do email recebido, essa instância encaminha o email para uma instância interna separada. Essa instância tem seu próprio mail_spool_directory, que posso configurar para entregar onde eu desejar.

Estou executando o bash no Ubuntu. Meu postfix é a versão 3.9.0. Eu tenho uma única instância configurada com sucesso para entregar/receber mensagens em um diretório personalizado.

email
  • 1 1 respostas
  • 66 Views

1 respostas

  • Voted
  1. Best Answer
    Max Haase
    2024-07-03T18:00:07+08:002024-07-03T18:00:07+08:00

    Para conseguir entregar mensagens recebidas em diretórios personalizados baseados em domínios de destinatários com Postfix, você não precisa necessariamente usar várias instâncias do Postfix. Você pode conseguir isso usando mapas de alias virtuais e mapas de transporte virtuais.

    Vou explicar como fazer isso, mas recomendo que você use uma abordagem de servidor de banco de dados, em vez de arquivos em disco. Existem até imagens docker prontas para serem implantadas que são mais "compatíveis com o futuro".

    OK.

    Primeiro: faça backup de sua configuração atual.

    Em seguida, configure o postfix para domínios virtuais. Eu uso o vim para edição, você pode querer usar vi, nano...outro.

    Edite o arquivo de configuração principal do Postfix:

    sudo vim /etc/postfix/main.cf
    

    Adicione ou modifique as seguintes configurações:

    virtual_mailbox_domains = domain1.com, domain2.com
    virtual_mailbox_base = /var/mail/vhosts
    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
    virtual_alias_maps = hash:/etc/postfix/virtual
    virtual_transport = virtual
    

    Em seguida, defina caixas de correio e aliases criando o arquivo vmailbox para definir os locais das caixas de correio:

    sudo vim /etc/postfix/vmailbox
    

    Adicione as entradas para os usuários e seus diretórios de correio correspondentes:

    [email protected] /some/custom/MailDir/user1/
    [email protected] /different/custom/MailDir/user2/
    [email protected] /custom/user3/domain1/mail/
    [email protected] /different/user3/domain2/mail/
    

    Salve e feche o arquivo.

    Agora, crie o arquivo de alias virtual (se necessário) para qualquer alias virtual:

    sudo vim /etc/postfix/virtual
    

    Conteúdo de exemplo:

    [email protected] [email protected]
    [email protected] [email protected]
    

    Salve e feche o arquivo.

    Execute o postmap para fazer o hash destes arquivos:

    sudo postmap /etc/postfix/vmailbox
    sudo postmap /etc/postfix/virtual
    

    Agora, configure o Dovecot para caixas de correio virtuais, edite a configuração do dovecot:

    sudo vim /etc/dovecot/dovecot.conf
    

    Certifique-se de ter o seguinte:

    mail_location = maildir:/var/mail/vhosts/%d/%n
    

    Configure o Dovecot para usar o banco de dados de usuários virtuais do Postfix:

    sudo vim /etc/dovecot/conf.d/auth-passwdfile.conf.ext
    

    Certifique-se de ter:

    passdb {
    driver = passwd-file
    args = /etc/dovecot/users
    }
    
    userdb {
    driver = static
    args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
    }
    

    Crie o arquivo de usuários do Dovecot:

    sudo vim /etc/dovecot/users
    

    Adicione os usuários:

    [email protected]:{plain}password1
    [email protected]:{plain}password2
    [email protected]:{plain}password3
    [email protected]:{plain}password4
    

    Salve e feche o arquivo.

    Definir permissões:

    sudo chown -R vmail:vmail /var/mail/vhosts
    

    Em seguida, reinicie o Postfix e o Dovecot

    sudo systemctl restart postfix
    sudo systemctl restart dovecot
    

    Explicação:

    Domínios Virtuais: A configuração virtual_mailbox_domains define os domínios manipulados por esta configuração do Postfix.

    Locais de caixa de correio: O arquivo virtual_mailbox_maps (/etc/postfix/vmailbox) define onde o correio para cada combinação de usuário/domínio deve ser entregue.

    Configuração do Dovecot: o Dovecot está configurado para procurar usuários em um arquivo de senha e mapeá-los para seus diretórios de e-mail com base em %d (domínio) e %n (nome de usuário).

    Existem outros tutoriais caso o meu não seja abrangente o suficiente.

    Boa sorte!

    • 0

relate perguntas

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 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