Назад | Перейти на главную страницу

Postfix по какой-то причине ищет /etc/aliases.db вместо использования Postgresql db

Я пытаюсь настроить свой Postfix + Devocot + Postgresql. А пока просто для того, чтобы иметь возможность каким-то образом получить электронное письмо и сохранить его в файловой системе.

Часть моего postfix / main.cf, в которой я закомментировал «псевдонимы» и которая ничего не изменила:

    #  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

Журнал 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 = 'my_original_good_email@gmail.com'?                                    ^?
    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 <my_original_good_email@gmail.com>: Temporary lookup failure; from=<my_original_good_email@gmail.com> 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

Я отправил ему письмо с моего хорошего адреса электронной почты / gmail "my_original_good_email@gmail.com".

Но почему Postfix ищет мой хороший / внешний электронная почта в его Таблица virtual_domains?

В чем дело? Почему "/etc/aliases.db"? Как отключить их только ради тестирования?

Обновить

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

И

  postfix_db=> select * from domains
   id |      name       | description

Ошибка при открытии базы данных псевдонимов не связана, но причина в том, что комментирование alias_maps и alias_database out не очищает их, но вместо этого использует значения по умолчанию:

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

Если вы хотите очистить какой-либо параметр конфигурации, явно установите его как пустой в вашем main.cf.

Ваша настоящая проблема в вашем Конфигурация клиента PostgreSQL или в структуре вашей базы данных:

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

Следующая ошибка - это то, на что вам действительно следует обратить внимание, поскольку она указывает на то, что проблема на самом деле заключается в вашей конфигурации в /etc/postfix/virtual_mailbox_domains.cf, что не соответствует структуре вашей базы данных:

warning: pgsql query failed: fatal error from host localhost: 
   ERROR:  column "value" does not exist?LINE 1: 
   select 1 from domains where value = 'my_original_good_email@gmail.com'?   ^?

Зная запрос, используемый в virtual_mailbox_domains.cf и заголовки из вывода postfix_db=> select * from domains мы можем заметить две ошибки.

  • Как говорится, столбца нет value в вашем столе domains. Вместо столбца value у вас есть столбец name который, я полагаю, имеет доменные имена.
  • Вы сравниваете адрес электронной почты целиком, а не домен. В соответствии с pgsql_table то %s заменяется клавишей ввода, а %d заменяется доменной частью адреса в параметре pgsql query.

Если вы исправите их оба, мое обоснованное предположение для результирующего запроса, который может сработать, будет:

query = select 1 from domains where name = '%d'