O Postfix está procurando por /etc/aliases.db por algum motivo, em vez de usar o db do Postgresql

1

Estou tentando configurar o Postfix + Devocot + Postgresql. Por enquanto, apenas para poder receber um email, de alguma forma, e salvá-lo no sistema de arquivos.

Uma parte do meu postfix / main.cf onde comentei "aliases" e que não mudou nada:

    #  query to find which domains we accept mail for
    virtual_mailbox_domains = pgsql:/etc/postfix/virtual_mailbox_domains.cf

    # query to find which email addresses we accept mail for
    virtual_mailbox_maps = pgsql:/etc/postfix/virtual_mailbox_maps.cf




    ######
    # disable aliases for now, just for testing

    # query to find a user's email aliases
    #virtual_alias_maps = pgsql:/etc/postfix/virtual_alias_maps.cf


    virtual_alias_domains =
    #alias_maps = hash:/etc/aliases
    #alias_database = hash:/etc/aliases

Log do Postfix:

    localhost postfix/master[30377]: terminating on signal 15
    localhost postfix/postfix-script[30489]: starting the Postfix mail system
    localhost postfix/master[30491]: daemon started -- version 3.3.1, configuration /etc/postfix

    localhost postfix/smtpd[30495]: error: open database /etc/aliases.db: No such file or directory # <----- WHY?????? Why not in Postgresql?

    localhost postfix/smtpd[30495]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
    localhost postfix/smtpd[30495]: connect from sender-of-o51.AAABBBCCC.com[11.22.33.44]
    localhost postfix/trivial-rewrite[30499]: warning: pgsql query failed: fatal error from host localhost: ERROR:  column "value" does not exist?LINE 1: select 1 from domains where value = '[email protected]'?                                    ^?
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains: pgsql:/etc/postfix/virtual_mailbox_domains.cf: table lookup problem
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains lookup failure
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains: pgsql:/etc/postfix/virtual_mailbox_domains.cf: table lookup problem
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains lookup failure
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains: pgsql:/etc/postfix/virtual_mailbox_domains.cf: table lookup problem
    localhost postfix/trivial-rewrite[30499]: warning: virtual_mailbox_domains lookup failure
    localhost postfix/smtpd[30495]: NOQUEUE: reject: RCPT from sender-of-o51.AAABBBCCC.com[11.22.33.44]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<mail1@my_postfix_email_server.com> proto=ESMTP helo=<sender-of-o51.AAABBBCCC.com>
    localhost postfix/smtpd[30495]: disconnect from sender-of-o51.AAABBBCCC.com[11.22.33.44] ehlo=2 starttls=1 mail=1 rcpt=0/1 quit=1 commands=5/6

Enviei um email para ele do meu email / gmail "[email protected]".

Mas por que o Postfix está procurando o meu e-mail bom / externo na sua tabela "virtual_domains"?

O que está acontecendo? Por que "/etc/aliases.db"? Como desabilitá-los apenas para testar?

Atualizar

  $ cat virtual_mailbox_domains.cf 
  user = postfix
  password = aaa
  hosts = localhost
  dbname = postfix_db
  query = select 1 from domains where value = '%s'

e

  postfix_db=> select * from domains
   id |      name       | description
    
por Serenado 27.05.2018 / 04:07

1 resposta

1

O erro ao abrir o banco de dados de aliases não está relacionado, mas o motivo para isso é que comentar alias_maps e alias_database out não os esvazia, mas faz com que os valores padrão sejam usados:

# postconf -d | grep alias_
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, nis:mail.aliases
. . .

Se você quiser esvaziar qualquer parâmetro de configuração, defina-o explicitamente como vazio em main.cf .

Seu problema real está na sua configuração do cliente PostgreSQL ou na estrutura do banco de dados:

pgsql:/etc/postfix/virtual_mailbox_domains.cf: table lookup problem

O erro a seguir é o que você realmente deveria estar olhando, pois ele aponta que o problema está na sua configuração em /etc/postfix/virtual_mailbox_domains.cf , que não corresponde à estrutura do seu banco de dados:

warning: pgsql query failed: fatal error from host localhost: 
   ERROR:  column "value" does not exist?LINE 1: 
   select 1 from domains where value = '[email protected]'?   ^?

Sabendo que a consulta usada em virtual_mailbox_domains.cf e os cabeçalhos da saída de postfix_db=> select * from domains , podemos identificar dois erros.

  • Como está escrito, não há coluna value na sua tabela domains . Em vez da coluna value , você tem uma coluna name que, suponho, tem os nomes de domínio.
  • Você está comparando o endereço de e-mail inteiro em vez do domínio. De acordo com pgsql_table , o %s é substituído pela chave de entrada, enquanto %d é substituído pelo domínio parte do endereço dentro do parâmetro pgsql query .

Se você corrigir os dois, minha estimativa para a consulta resultante que pode funcionar seria:

query = select 1 from domains where name = '%d'
    
por 27.05.2018 / 07:56