Я ищу SMTP-сервер, который будет использоваться для пересылки нескольких адресов электронной почты. Два требования:
Я пробовал Postfix, но увяз в сообщениях об ошибках вроде Recipient address rejected: User unknown in virtual alias table
и Recipient address rejected: User unknown in local recipient table
. Так что мне интересно, есть ли более простое решение.
Использовать Postfix
В ubuntu сделайте следующее
apt-get install postfix
Я делаю то же самое с настройкой электронной почты vps. проверьте мой пост в блоге Крошечный VPS Postfix. Я копирую пример ниже
/etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = <YOUR HOSTNAME>
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = <YOUR DOMAIN NAME>, localhost.domain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unlisted_recipient,
reject_unauth_destination,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client relays.mail-abuse.org,
reject_rbl_client dnsbl.proxybl.org,
reject_rbl_client truncate.gbudb.net,
reject_rbl_client dnsbl.njabl.org,
permit
Помните, чтобы изменить <YOUR HOSTNAME>
и <YOUR DOMAIN NAME>
Файл псевдонима
Ваш /etc/aliases
файл должен выглядеть следующим образом
foo: mrfoo@gmail.com
bar: mrbar@gmail.com
В левой части не должно быть имени домена, только имя пользователя. Домен контролируется вашей конфигурацией постфикса. затем сделайте следующее
cd /etc
postalias aliases
service postfix restart
Ограничение одного хоста
Чтобы разрешить только электронную почту от одного (или нескольких) хостов, я собираюсь использовать очень ленивый способ сделать это.
Предполагая, что IP-адрес разрешенного входящего хоста имеет IP 192.168.1.100, добавьте его в mynetworks
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.100
+ Изменить smtpd_recipient_restrictions
следовать
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unlisted_recipient
Postfix только (и всегда) принимает электронную почту от хостов, перечисленных в mynetworks
. И отвергайте все остальное.
Конфигурация DNS
Не забудьте настроить запись MX и запись spf.
Я использую Postfix аналогичным образом для пересылки на другой сервер. Используя три варианта конфигурации, но для вашей конфигурации есть более простой способ.
Один из моих файлов LDAP выглядит так для запроса источника LDAP в Zimbra ...
server_host=ldap://[mail.domain.com]:389
server_port=389
search_base=
query_filter = (&(|(zimbraMailDeliveryAddress=%s)(zimbraMailAlias=%s)(zimbraMailCatchAllAddress=%s))(zimbraMailStatus=enabled))
result_attribute = zimbraMailDeliveryAddress,zimbraMailAlias
version = 3
ldap_cache = yes
ldap_cache_expiry = 600
ldap_cache_size = 64256
bind = yes
bind_dn = uid=[valid login],cn=[valid cn],cn=[valid cn]
bind_pw = [a valid password]
timeout = 30
Однако в зависимости от того, что вы ищете, было бы проще хранить информацию в локальных хэш-таблицах, которые можно использовать для этой цели. Единственное, что вам нужно помнить, это то, что когда вы вносите изменения в файлы, вам нужно повторно запустить postmap для построения дружественной к постфиксу хеш-таблицы.
Вам нужно будет создать текстовый файл в указанном выше месте со следующими парами записей: {[адрес электронной почты] ОК}
email1@fwddomain.com OK
email2@fwddomain.com OK
email3@fwddomain.com OK
Запустите postmap в файле выше, чтобы сгенерировать фактический файл хэша, который затем создается в той же папке, что и relay_recipients_maps.db. Postfix теперь проверит этот файл на предмет наличия действительных получателей для доставки.
Затем вам нужно указать Postfix, куда отправлять электронную почту для этого домена при ее получении. Проделав то же самое с файлом / etc / postfix / transport_maps, вы можете ввести пары vaild, которые представляют собой домен, на который отправляется электронное письмо, и хост, на который его пересылают.
fwddomain.com smtp:mail.fwddomain.com
Надеюсь, это поможет вам указать правильное направление. Существует гораздо больше информации о том, как создавать эти типы файлов конфигурации в Интернете, а другие могут даже использовать БД для поиска этих параметров конфигурации.