Я пытаюсь настроить небольшой сервер Ubuntu, который будет принимать практически любые электронные письма и пересылать их все на адрес электронной почты по моему выбору.
Я провел небольшое исследование и думаю, что это можно было бы сделать с postfix
, но я действительно не знаком с этим.
Может ли кто-нибудь дать мне подробное объяснение того, как я буду это делать? Я начинаю с нуля со свежего сервера Ubuntu, я пробовал добавить это в main.cf из postfix
но это не работает.
luser_relay = redirect@myemailaddress.com
local_recipient_maps =
Конечная цель состоит в том, чтобы я просто создал MX-запись, указывающую на мой сервер для всех моих доменов, которые я использую, и электронные письма начнут течь (временно). Я понимаю риски безопасности и проблему спама.
Спасибо за помощь
PS: Я открыт для любых других способов сделать это, если кто-нибудь знает какие-либо приложения или самый простой способ сделать это, это сработает для меня.
Этот ответ не принимает почту для всего TLD "ca". Это потому, что я обнаружил, что домены с подстановочными знаками в таблице VirtUser требуют исправления файла m4.
Этот ответ действительно предоставляет способ взять список доменов .ca и переписать получателя на внешний адрес.
apt-get install sendmail
service sendmail start
По умолчанию 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:
...
Нам нужно отредактировать файл «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
С внешнего сервера используйте 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
Нам нужно указать 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 на сервере, чтобы проверить правильность работы виртуальных правил:
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
Итак, моя первая проверка электронной почты прошла и попала в спам. После каждого теста я получаю код 4xx (отложенный) с серверов Gmail. Это имеет смысл, поскольку это выглядит чертовски спамерским ...
В итоге письмо прошло, но это заняло несколько минут. Выдача кодов 4xx - это один из способов использования почтовых серверов для «ограничения скорости» серверов, просматривающих спам.
Вы, вероятно, захотите настроить правила белого списка на принимающем сервере, потому что эти электронные письма, поскольку они будут выглядеть как спам, черт возьми.
Обратите внимание, это с уровнем журнала «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