Я пытаюсь настроить свой 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'