Por que o postfix-spamassassin-dovecot é configurado dessa maneira?

0

Eu adicionei recentemente o spamassassin ao meu servidor de e-mail, já que as listas negras não eram eficientes o suficiente.

Para esclarecer: eu uso o Postfix como SMTP + Dovecot como LDA, postgrey para greylisting e postfwd para limitação de taxa.

Para adicionar o Spamassassin, eu uso o guia: link Embora funcione, não vejo por que isso acontece. O que me incomoda é o master.cf:

smtp       inet  n       -       y       -       -       smtpd
-o content_filter=spamassassin

dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -m ${extension}

spamassassin unix -     n       n       -       -       pipe
user=debian-spamd argv=/usr/bin/spamc -f -e  
/usr/sbin/sendmail -oi -f ${sender} ${recipient}

Eu não entendo porque de repente há sendmail envolvido. Existe uma maneira de configurar isso de maneira mais adequada?

Aqui também está meu postconf -n caso seja necessário.

append_at_myorigin = yes
biff = no
broken_sasl_auth_clients = yes
default_destination_concurrency_limit = 1
delay_warning_time = 8h
disable_vrfy_command = yes
dovecot_destination_concurrency_limit = 1
dovecot_destination_recipient_limit = 1
enable_original_recipient = yes
local_destination_concurrency_limit = 1
mailbox_size_limit = 100000000
maximal_queue_lifetime = 6d
message_size_limit = 52428800
myhostname = REDACTED
myorigin = /etc/mailname
smtp_helo_name = REDACTED
smtp_use_tls = yes
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_delay_reject = no
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10040 permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org=127.0.0.[2..11], reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, check_policy_service inet:127.0.0.1:10023
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, reject_unauth_pipelining
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = REDACTED
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_soft_error_limit = 5
smtpd_tls_cert_file = REDACTED
smtpd_tls_dh1024_param_file = /etc/ssl/dhparams.pem
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
smtpd_tls_key_file = REDACTED
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_random_source = dev:/dev/urandom
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_transport = dovecot
    
por Jakub Lucký 27.03.2018 / 14:40

2 respostas

0

Quando uma marca registrada é muito bem-sucedida, ela pode se tornar um nome genérico para a coisa pela qual é mais conhecida. Algo muito semelhante aconteceu com o comando /usr/sbin/sendmail nos sistemas Linux e Unix.

Quando o Postfix está instalado, /usr/sbin/sendmail não é realmente o Sendmail - é apenas um componente do Postfix que fornece a mesma interface (ou seja, as mesmas opções e convenções de tubulação) que o Sendmail.

O Postfix foi criado como substituto do Sendmail. Acontece que muitos programas irão interagir com o subsistema de email chamando /usr/sbin/sendmail com opções conhecidas e coisas de piping para ele. Então, o Postfix também deve suportar isso.

Quando o Spamassassin está sendo usado, a mensagem deve ser passada para spamc para detecção de spam. Como ele adicionará pelo menos alguns cabeçalhos à mensagem, indicando que a verificação de spam foi executada e seus resultados (e, se uma mensagem for spam, uma notificação no início do conteúdo da mensagem), spamc deverá então passar a mensagem de volta ao Postfix para entrega final.

Observe que "pipe" é considerado pelo Postfix como um método de transporte ou, em outras palavras, se a mensagem for enviada para spamc , o Postfix considera seu trabalho feito nesse ponto. Assim, a mensagem marcada com spam precisa ser reinjetada novamente no processamento do Postfix - e é isso que o comando sendmail faz.

A palavra-chave content_filter faz menos do que você poderia esperar - ela apenas diz ao Postfix para passar a mensagem que veio em smtpd para um método de transporte específico. Ele não espera automaticamente qualquer conteúdo de volta: se o método de transporte content_filter engole a mensagem sem saída, a tarefa do Postfix é concluída. Se sobrar alguma coisa depois que a mensagem passar pelo filtro, o trabalho do filtro será devolvê-lo ao processamento novamente.

Há pelo menos uma outra maneira de conseguir a mesma coisa , mas ele acabará usando o sendmail comando para re-injetar o correio após verificação de spam também.

Se você tem certeza de que o Postfix só processará os e-mails recebidos, provavelmente você poderá configurar spamc para passar a mensagem diretamente para o Dovecot.

    
por 27.03.2018 / 15:03
0

o sendmail não está envolvido. Isso é apenas um executável postfix, e é chamado assim por razões históricas e compatibilidade.

veja a página man:

SENDMAIL(1)                                       General Commands Manual 

NAME
       sendmail - Postfix to Sendmail compatibility interface

SYNOPSIS
       sendmail [option ...] [recipient ...]
[...]

EDIT: (adicionado após seu comentário)

você poderia alterá-lo com o dovecot LDA, mas isso só funcionaria para a entrega local, é claro. Você pode verificar se há spam e enviar emails, e eles não funcionariam com o dovecot. Aviso de isenção de responsabilidade: Eu não verifiquei toda a sua configuração:)

    
por 27.03.2018 / 14:59