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 / 986983
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2019-10-07 12:29:52 +0800 CST2019-10-07 12:29:52 +0800 CST 2019-10-07 12:29:52 +0800 CST

Postfix não passa e-mails para Amavis, quando recebidos do Z-push

  • 772

Estou meio que me encarando cego em como fazer o ActiveSync funcionar corretamente com meu servidor de e-mail, então talvez alguém aqui tenha uma ideia?

O negócio é que o servidor de e-mail está hospedando quatro domínios e eu quero que todos os e-mails enviados tenham assinatura DKIM.

Consegui que funcione ao enviar via SMTP, mas falha na assinatura quando o cliente usa o ActiveSync para enviar o email.

De qualquer forma, aqui está um diagrama de como funciona para o SMTP:

Fluxograma para tratamento de correio no Postfix junto com o Amavis

A maior parte da mágica em como o Postfix decide como identificar e-mails enviados de um usuário autenticado, que pertence a um dos meus domínios hospedados versus um e-mail de algum lugar na Internet vem desta linha em /etc/postfix/main.cf:

smtpd_sender_restrictions = 
    check_sender_access regexp:/etc/postfix/tag_as_originating.re, 
    permit_mynetworks, 
    permit_sasl_authenticated, 
    check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, 
    check_sender_access regexp:/etc/postfix/tag_as_foreign.re

content_filter = amavis:[127.0.0.1]:10024

O conteúdo de /etc/postfix/tag_as_foreign.re:

/^/ FILTER amavis:[127.0.0.1]:10024

Amavis enviou o resultado de volta ao Postfix usando a porta 10025 que é tratada /etc/postfix/master.cfcom esta configuração:

127.0.0.1:10025 inet n - n - - smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks, reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o receive_override_options=no_unknown_recipient_checks, no_header_body_checks
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes

O conteúdo de /etc/postfix/tag_as_originating.re:

/^/ FILTER amavis:[127.0.0.1]:10026

O resultado é enviado de volta ao Postfix usando a porta 10027 e tratado por este código em /etc/postfix/master.cf:

127.0.0.1:10027 inet n - n - - smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks, reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o receive_override_options=no_unknown_recipient_checks, no_header_body_checks
    -o smtp_send_xforward_command=yes
    -o milter_default_action=accept
    -o milter_macro_daemon_name=ORIGINATING
    -o disable_dns_lookups=yes

Finalmente, aqui estão as linhas relevantes master.cfsobre como os e-mails são apresentados ao Postfix em primeiro lugar:

smtp      inet  n       -       y       -       -       smtpd

pickup    unix  n       -       y       60      1       pickup

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated, reject

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated, reject

Estou usando Z-pushpara lidar com conexões via ActiveSync, mas meu problema é o seguinte:

Eu notei no mail.log que, embora declarado nos arquivos de configuração do z-push que ele deve passar os e-mails de entrada para o postfix via SMTP, ele ainda insiste em colocar os e-mails de entrada diretamente no diretório maildrop que, por sua vez, é tratado pelo deamon de coleta do Postfix.

A partir daí, o correio é encaminhado diretamente para o endereço de destino, mesmo sem ser DKIM assinado pela Amavis.

A questão é: Como posso fazer com que o Postfix passe e-mails do daemon de coleta para o Amavis, para que ele possa obter uma assinatura DKIM, antes de ser encaminhado ao destino?

É tão simples como apenas inserir uma linha abaixo pickupcom master.cfo texto:

-o content_filter = amavis:[127.0.0.1]:10026

... ou o conflito com a configuração já existente? :-)

postfix
  • 1 1 respostas
  • 753 Views

1 respostas

  • Voted
  1. Best Answer
    Lasse Michael Mølgaard
    2019-10-12T02:14:32+08:002019-10-12T02:14:32+08:00

    Depois de um pouco mais de ajustes, finalmente consegui fazê-lo funcionar.

    Aqui está uma explicação do que está acontecendo.

    O Z-push é escrito em PHP e o que pude encontrar na Internet foi que as configurações de email do PHP são controladas via php.ini.

    Em php-ini-file, você será informado de que a única opção disponível ao enviar e-mail é através sendmaile, portanto, todos os e-mails recebidos do Z-push sempre serão enviados para a pasta maildrop, que o deamon de coleta do Postfix trata.

    As configurações de SMTP só funcionam se instaladas em um host Windows.

    Isso é um pouco estúpido se você me perguntar, mas de qualquer maneira eu preciso tomar outro caminho se eu quiser assinar e-mails com assinatura DKIM recebidos via protocolo ActiveSync (também conhecido como Z-push).

    Eu precisava, como suspeito, adicionar content_filterà linha seguindo a pickuplinha em /etc/postfix/master.cf, mas também precisava ajustar um pouco meu arquivo de configuração do Amavis.

    O arquivo /etc/postfix/master.cfé basicamente como antes, exceto quando você vai para a linha de coleta, agora afirma:

    amavis unix - - y - 2 smtp 
       -o smtp_data_done_timeout=1200
       -o smtp_send_xforward_command=yes
       -o smtp_bind_address=
    
    pickup    unix  n       -       y       60      1       pickup
       -o content_filter=amavis:[127.0.0.1]:10026
    

    Adicionei a seção amavis, pois descobri que, se for comentada, o Amavis nunca será chamado. Apenas para completar tudo. :-)

    Na /etc/amavis/conf.d/50-userconfiguração a seguir está como o Amavis distingue entre e-mail de entrada de qualquer lugar para minhas contas de e-mail versus e-mail enviado de uma de minhas contas para qualquer lugar:

    $inet_socket_port = [10024,10026];
    
    $forward_method = 'smtp:[127.0.0.1]:10025';
    $notify_method = 'smtp:[127.0.0.1]:10027';
    
    $interface_policy{'10026'} = 'ORIGINATING';
    $policy_bank{'ORIGINATING'} = {
        originating => 1,
        smtpd_discard_ehlo_keywords => ['8BITMIME'],
        forward_method => 'smtp:[127.0.0.1]:10027',
    };
    
    # IP-Addresses for internal networks => load policy MYNETS
    # - requires -o smtp_send_xforward_command=yes in postfix master.cf
    @mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 
                     [::1] [FE80::]/10 [FEC0::]/10);
    
    # Allow SMTP access from IPs in @inet_acl to amvisd SMTP Port
    @inet_acl = qw( 127.0.0.1 [::1] 192.168.0.0/16 );
    
    # DKIM
    $enable_dkim_verification = 1; 
    $enable_dkim_signing = 1; # load DKIM signing code
    $signed_header_fields{'received'} = 0;  # turn off signing of Received
    @dkim_signature_options_bysender_maps = (
    { '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
    
    

    O ajuste que mencionei foi que antes eu tinha as seguintes linhas em /etc/amavis/conf.d/50-user:

    $forward_method = 'smtp:[127.0.0.1]:*';
    $notify_method = 'smtp:[127.0.0.1]:*';
    
    $policy_bank{'ORIGINATING'} = {
        originating => 1,
        smtpd_discard_ehlo_keywords => ['8BITMIME'],
    };
    
    

    A maneira como *funciona é que tudo o que Amavis receber em uma porta (por exemplo, '10025') será respondido de volta em uma porta superior (por exemplo, '10026').

    O que eu precisava era ser um pouco mais explícito - para evitar confusão.

    Espero que isso ajude se houver mais alguém xingando na tela tentando fazer o DKIM funcionar com o Postfix e o Amavis. :-)

    • 1

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