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

Как настроить почтовый сервер Ubuntu, который принимает любые электронные письма от *@*.ca и пересылает их на внешний адрес электронной почты?

Я пытаюсь настроить небольшой сервер Ubuntu, который будет принимать практически любые электронные письма и пересылать их все на адрес электронной почты по моему выбору.
Я провел небольшое исследование и думаю, что это можно было бы сделать с postfix, но я действительно не знаком с этим.

Может ли кто-нибудь дать мне подробное объяснение того, как я буду это делать? Я начинаю с нуля со свежего сервера Ubuntu, я пробовал добавить это в main.cf из postfix но это не работает.

luser_relay = redirect@myemailaddress.com 
local_recipient_maps =

Конечная цель состоит в том, чтобы я просто создал MX-запись, указывающую на мой сервер для всех моих доменов, которые я использую, и электронные письма начнут течь (временно). Я понимаю риски безопасности и проблему спама.

Спасибо за помощь

PS: Я открыт для любых других способов сделать это, если кто-нибудь знает какие-либо приложения или самый простой способ сделать это, это сработает для меня.

Этот ответ не принимает почту для всего TLD "ca". Это потому, что я обнаружил, что домены с подстановочными знаками в таблице VirtUser требуют исправления файла m4.

Этот ответ действительно предоставляет способ взять список доменов .ca и переписать получателя на внешний адрес.

Установите Sendmail, запустите его.

apt-get install sendmail
service sendmail start

Создание списка sendmail для всех адаптеров

По умолчанию sendmail будет прослушивать локальный хост (127.0.0.1). Нам нужно отредактировать sendmail.mc, чтобы он прослушивал все IP-адреса.

vim /etc/mail/sendmail.mc

Изменить:

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

... Чтобы ...

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl

... затем создайте файл sendmail.cf:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

... затем перезапустите sendmail:

service sendmail restart

Теперь нам нужно подтвердить, что sendmail прослушивает все адаптеры. Используйте netstat, вы должны получить что-то вроде этого:

netstat -tpln
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
...
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      6104/sendmail: MTA:
...

Создание РЕЛЕЙНОЙ почты sendmail для TLD "ca":

Нам нужно отредактировать файл «access», чтобы указать sendmail принимать почту для TLD «ca».

vim /etc/mail/access

Добавьте это где-нибудь вокруг других операторов "RELAY". Это заставляет sendmail принимать любую почту с адресом получателя '* .ca'.

To:ca                   RELAY

Сохранить и выйти...

Затем используйте makemap для создания файла хэш-карты access.db:

makemap hash /etc/mail/access < /etc/mail/access

Перезапустите sendmail:

service sendmail restart

Тестирование оператора RELAY с помощью telnet с внешнего сервера:

С внешнего сервера используйте telnet, чтобы вручную проверить получателя "* .ca":

telnet your_mail.server 25

Вот команды, которые я ввел в сеансе telnet:

helo testing.com
mail from: ttucker@ttucker.net
rcpt to: ttucker@derp.ca
quit

Вот пример того, как должен выглядеть результат:

root@zim:~# telnet dib.ttucker.net 25
Trying 52.43.174.20...
Connected to dib.ttucker.net.
Escape character is '^]'.
220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 04:36:55 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
helo testing.com
250 localhost Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
mail from: ttucker@ttucker.net
250 2.1.0 ttucker@ttucker.net... Sender ok
rcpt to: ttucker@derp.ca
250 2.1.5 ttucker@derp.ca... Recipient ok
quit
221 2.0.0 localhost closing connection
Connection closed by foreign host.

Если вы видите это:

rcpt to: ttucker@derp.ca
550 5.7.1 ttucker@derp.ca... Relaying denied. IP name possibly forged [23.227.163.72]

... значит что-то не работает ...

Настроены виртуальные и виртуальные домены

Чтобы переписать получателя любых входящих писем для наших доменов .ca, мы используем virtusertable.

Сначала мы снова редактируем sendmail.mc, чтобы включить некоторые функции:

vim /etc/mail/sendmail.mc

Найдите строку:

FEATURE(`access_db', , `skip')dnl`

... и добавьте после него следующие строки ...

FEATURE(`virtusertable')dnl
VIRTUSER_DOMAIN_FILE(`/etc/mail/virtuser-domains')dnl
FEATURE(`virtuser_entire_domain')dnl

Примечание: синтаксис FEATURE () начинается с обратной кавычки и заканчивается одинарной кавычкой.

... Сохранить и выйти ...

Скомпилируйте файл конфигурации:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Добавление домена в файл virtuser-domains:

Нам нужно указать sendmail, для каких доменов он должен искать в таблице виртуальных пользователей. Поскольку sendmail лучше всего подходит для левой стороны домена, мы можем поместить сюда только TLD "ca" ...

vim /etc/mail/virtuser-domains

... добавьте домен "ca":

ca

... (да, файл просто содержит "ca") ... сохранить и выйти

Добавление перезаписей в таблицу виртуальных пользователей:

Затем нам нужно указать sendmail, что нужно переписать. Мы добавляем их в файл virtusertable. Как указано выше, вам нужно будет добавить каждый домен в этот файл вручную или с помощью сценария.

vim /etc/mail/virtusertable

... добавьте свои домены:

@derp.ca         someone@gmail.com
@another.ca      someone@gmail.com
@sendmail.ca     someone@gmail.com

... Сохранить и выйти ...

Теперь нам снова нужно использовать makemap:

makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Примечание: теперь у вас должен быть файл /etc/mail/virtusertable.db

... перезапустить sendmail:

service sendmail restart

Тестирование перезаписи с помощью sendmail -bv

Вы можете использовать sendmail на сервере, чтобы проверить правильность работы виртуальных правил:

root@dib:/etc/mail# sendmail -bv ttucker@derp.ca
ttucker@derp.ca... deliverable: mailer esmtp, host gmail.com., user someone@gmail.com

Тестирование реального электронного письма:

На внешнем сервере снова запустите telnet:

telnet your_email.server 25

... после того, как баннер вернется, скопируйте и вставьте следующее:

helo testing.com
mail from: ttucker@ttucker.net
rcpt to: ttucker@derp.ca
data
subject: This is a test
from: ttucker@ttucker.net
to: ttucker@derp.ca

Hello Self,

This is a test.

Regards,
.
quit

Все вместе это должно выглядеть так:

root@zim:~# telnet dib.ttucker.net 25
Trying 52.43.174.20...
Connected to dib.ttucker.net.
Escape character is '^]'.
220 dib.ttucker.net ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 06:28:46 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
helo testing.com
mail from: ttucker@ttucker.net
rcpt to: ttucker@derp.ca
data
subject: This is a test
from: ttucker@ttucker.net
to: ttucker@derp.ca

Hello Self,

This is a test.

Regards,
.
quit250 dib.ttucker.net Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
250 2.1.0 ttucker@ttucker.net... Sender ok
250 2.1.5 ttucker@derp.ca... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.1.0 ttucker@ttucker.net... Sender ok
250 2.1.5 ttucker@derp.ca... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 v556SkbP009313 Message accepted for delivery
250 2.1.0 ttucker@ttucker.net... Sender ok
250 2.1.5 ttucker@derp.ca... Recipient ok
354 Enter mail, end with "." on a line by itself

221 2.0.0 dib.ttucker.net closing connection
Connection closed by foreign host.

После мыслей:

Вы также можете захотеть увеличить уровень журнала sendmail, потому что уровень журнала по умолчанию не очень подробный.

Добавьте в sendmail.mc следующее, выполните компиляцию и перезапустите:

define(`confLOG_LEVEL', `14')dnl

Google довольно быстро занес меня в серый список ... Думаю ...

Итак, моя первая проверка электронной почты прошла и попала в спам. После каждого теста я получаю код 4xx (отложенный) с серверов Gmail. Это имеет смысл, поскольку это выглядит чертовски спамерским ...

В итоге письмо прошло, но это заняло несколько минут. Выдача кодов 4xx - это один из способов использования почтовых серверов для «ограничения скорости» серверов, просматривающих спам.

Вы, вероятно, захотите настроить правила белого списка на принимающем сервере, потому что эти электронные письма, поскольку они будут выглядеть как спам, черт возьми.

Как это выглядит в журналах sendmail:

Обратите внимание, это с уровнем журнала «20», потому что это показывает заблокированное сообщение, и я устранял неполадки:

root@dib:/etc/mail# grep v556cKKt010016 /var/log/mail.log
Jun  5 06:38:20 dib sm-mta[10016]: v556cKKt010016: Milter: no active filter
Jun  5 06:38:21 dib sm-mta[10016]: v556cKKt010016: --- 220 dib.ttucker.net ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 06:38:20 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- helo testing.com
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 dib.ttucker.net Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- mail from: ttucker@ttucker.net
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.1.0 ttucker@ttucker.net... Sender ok
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- rcpt to: ttucker@derp.ca
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.1.5 ttucker@derp.ca... Recipient ok
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- data
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 354 Enter mail, end with "." on a line by itself
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: from=ttucker@ttucker.net, size=110, class=0, nrcpts=1, msgid=<201706050638.v556cKKt010016@dib.ttucker.net>, proto=SMTP, daemon=MTA-v4, relay=billing.bizzhost.com [23.227.163.72] (may be forged)
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.0.0 v556cKKt010016 Message accepted for delivery
Jun  5 06:38:25 dib sm-mta[10020]: v556cKKt010016: makeconnection (gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:400e:c04:0:0:0:1a]) failed: Network is unreachable
Jun  5 06:40:25 dib sm-mta[10020]: v556cKKt010016: makeconnection (gmail-smtp-in.l.google.com. [173.194.202.26]) failed: Connection timed out with gmail-smtp-in.l.google.com.
Jun  5 06:40:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt1.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:4001:c1a:0:0:0:1b]) failed: Network is unreachable
Jun  5 06:42:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt1.gmail-smtp-in.l.google.com. [173.194.196.26]) failed: Connection timed out with alt1.gmail-smtp-in.l.google.com.
Jun  5 06:42:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt2.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:4002:c03:0:0:0:1b]) failed: Network is unreachable
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt2.gmail-smtp-in.l.google.com. [173.194.219.27]) failed: Connection timed out with alt2.gmail-smtp-in.l.google.com.
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt3.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:400d:c0c:0:0:0:1a]) failed: Network is unreachable
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: SMTP outgoing connect on ip-172-31-42-65.us-west-2.compute.intern
Jun  5 06:44:27 dib sm-mta[10020]: v556cKKt010016: to=ttucker@derp.ca, delay=00:06:02, xdelay=00:06:02, mailer=esmtp, pri=120110, relay=alt3.gmail-smtp-in.l.google.com. [173.194.68.26], dsn=2.0.0, stat=Sent (OK 1496645067 v28si8540518qth.285 - gsmtp)
Jun  5 06:44:27 dib sm-mta[10020]: v556cKKt010016: done; delay=00:06:02, ntries=1