Я пытаюсь отправить всю местную почту в единственное внешнее электронное письмо, с помощью серверов SMTP Google (я получил ту работу после этого хорошего учебного руководства).
Используя работу серверов SMTP Google, поскольку я могу отправить почту во внешнюю работу адресов с помощью почты от mailutils.
Перенаправление местной почты на внешний адрес электронной почты не работает. При отправке почты для укоренения от моего тестового использования учетной записи:
echo "Body" | mail -s "Test Postfix To Root" root
Sep 4 18:48:06 desktop1204test postfix/pickup[5535]: C9326EE26: uid=1000 from=
Sep 4 18:48:06 desktop1204test postfix/cleanup[5702]: C9326EE26: message-id=
Sep 4 18:48:06 desktop1204test postfix/qmgr[5534]: C9326EE26: from=, size=401, nrcpt=1 (queue active)
Sep 4 18:48:06 desktop1204test postfix/local[5704]: C9326EE26: to=, orig_to=, relay=local, delay=0.03, delays=0.02/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 4 18:48:06 desktop1204test postfix/qmgr[5534]: C9326EE26: removed
Мой /etc/postfix/main.cf
:
inet_interfaces = loopback-only
mynetworks = loopback-only
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
## I commented the below two lines out, as they conflicted with the accepted answer
####virtual_alias_domains = localhost.localdomain
####virtual_alias_maps = hash:/etc/postfix/virtual
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
Мой etc/aliases
:
# See man 5 aliases for format
postmaster: root
Мой/etc/postfix/virtual:
@localhost.localdomin someone@somewhere.com
Как я могу получить его работа? Я не хочу, чтобы любая местная почта прибыла локально, они должны все переходить в someone@somewhere.com
.
Это может быть выполнено через виртуальный regexp (/etc/postfix/virtual-regexp)
/.+@.+/ someone@somewhere.com
затем в main.cf:
virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp
и mapfile:
postmap /etc/postfix/virtual-regexp
Это должно добиться цели для всех местных почт (иначе, необходимо указать все адреса на виртуальном),
Для тех, кто хочет отправлять почту на другие домены в обычном режиме (например, на пустом клиенте только для отправки), и получает почту для системных учетных записей, доставляемых удаленно, вы создаете /etc/postfix/virtual-regexp
. В нем либо сопоставьте все системные учетные записи, у которых нет реальной входящей почты, с другой:
/^\(root\|postmaster\|postfix|etc\)@domain\.example$/ person@domain.example
или сопоставьте все учетные записи, которые не известны реальным входящим почтовым ящикам (не делайте отступ if
): [ 1117]
if /@domain\.example$/
!/^\(person\|anotherperson\|peeps\)@/ person@domain.example
endif
Это много легче, если ваша настройка myorigin
в /etc/postfix/main.cf
отличается от ваших реальных доменов входящих (например, субдомен mail.domain.example
), так как вы можете соответствовать все так:
/@mail\.domain\.example$/ person@domain.example
Как говорили другие, не запускайте postmap
для этого файла и удалите /etc/postfix/virtual-regexp.db
, если он существует.
Используйте новое отображение, добавив
local_recipient_maps =
virtual_alias_maps = regexp:/etc/postfix/virtual-regexp
к /etc/postfix/main.cf
.
Я также добавил
root: person@domain.example
в /etc/aliases
и выполнил команду newaliases
, но я думаю, что конфигурация виртуального псевдонима Postfix переопределяет ее.