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

Ящик Linode (Debian) с несколькими веб-приложениями - можно ли отправлять электронные письма из нескольких доменов через sendmail?

У меня есть экземпляр Linode, в котором я собираюсь разместить несколько небольших приложений LEMP. Каждое из этих приложений должно отправлять электронные письма пользователям (в основном для регистрации учетной записи ... форумы / комментарии и многое другое). Я хотел бы иметь возможность просто использовать для этого sendmail, поскольку он уже установлен в системе. Это возможно? Я не ожидаю большого трафика / использования электронной почты, поэтому я использую SMTP-сервер Google:

Идея состоит в том, что sendmail будет нулевым клиентом - он может отправлять почту (и я уже получаю от него системные уведомления (OSSEC, Fail2ban)), но не получать входящую почту. Любая контактная форма / механизм приложения отправляет сообщение владельцу самого приложения, в результате чего он может напрямую общаться с ним через свою электронную почту. Однако у меня есть несколько вопросов:

  1. Можно ли настроить все так, чтобы каждое приложение имело собственный исходящий адрес электронной почты / идентификатор? Я разделил каждое приложение на отдельного пользователя linux без доступа sudo. Итак, (вымышленные имена) Bob's Widget Emporium является отдельным пользователем, как и Sally's Awesome Contemporary Views. Каждое приложение имеет свои собственные записи домена через облачный DNS-менеджер Linode из-за виртуального хостинга.
  2. Что мне нужно сделать, чтобы эти электронные письма не считались спамом? И будет ли эта конфигурация выполняться на уровне централизованного блока или для каждой учетной записи?
  3. Что мне нужно сделать, чтобы заблокировать входящие электронные письма из внешних источников? Мои iptables следующие -

ipv4:

$ sudo iptables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 8887  909K f2b-ssh    tcp  --  any    any     anywhere             anywhere             multiport dports ssh
 1282  128K ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 REJECT     all  --  !lo    any     127.0.0.0/8          anywhere             reject-with icmp-port-unreachable
  162  5770 ACCEPT     icmp --  any    any     anywhere             anywhere             state NEW icmp echo-request
  668 38256 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh state NEW
  355 19004 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http state NEW
  424 22736 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https state NEW
48568 4098K ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
 6996  368K LOG        all  --  any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
 7413  388K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all  --  any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_FORWARD_denied: "
    0     0 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain f2b-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 8531  881K RETURN     all  --  any    any     anywhere             anywhere

ipv6:

sudo ip6tables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all      lo     any     anywhere             anywhere            
    0     0 REJECT     all      !lo    any     localhost            anywhere             reject-with icmp6-port-unreachable
67580 6991K ACCEPT     ipv6-icmp    any    any     anywhere             anywhere            
   31  2480 ACCEPT     tcp      any    any     anywhere             anywhere             tcp dpt:http state NEW
   33  2640 ACCEPT     tcp      any    any     anywhere             anywhere             tcp dpt:https state NEW
10922   50M ACCEPT     all      any    any     anywhere             anywhere             state RELATED,ESTABLISHED
    4  2956 LOG        all      any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "ip6tables_INPUT_denied: "
    4  2956 REJECT     all      any    any     anywhere             anywhere             reject-with icmp6-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all      any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "ip6tables_FORWARD_denied: "
    0     0 REJECT     all      any    any     anywhere             anywhere             reject-with icmp6-port-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

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

Итак, возможно ли все это сделать с помощью только sendmail, и если да, то как мне это настроить? Или, если это слишком общий вопрос, дайте мне знать, и я разделю его.

  1. Да. Некоторые приложения поддерживают указание адреса «от». В противном случае вы можете использовать общую стабильную функцию sendmail, которая

приведет к тому, что неквалифицированные адреса (т. е. без домена) и адреса с доменом, перечисленным в классе {G}, будут найдены на карте и преобразованы в другую («общую») форму, которая может изменить как имя домена, так и пользователя название.

Пример:

FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') 

В / etc / mail / genericstable

bob bob@widgetemp.com
sally sally@poliviews.com
  1. Вам необходимо, чтобы прямой и обратный DNS соответствовали почтовому серверу. Вам необходимо настроить SPF для доменов, которые вы будете использовать. Если IP появляется в http://www.anti-abuse.org/multi-rbl-check/ вам нужно получить другой IP. (Рассмотрите возможность использования управляемой почтовой службы. Запуск почтового сервера раздражает из-за того, что спамеры все портят. Однако, поскольку вы используете sendmail, вам должно нравиться боль.)

  2. sendmail по умолчанию прослушивает только localhost, поэтому вам не нужно ничего делать. Если вы настроили прослушивание всех интерфейсов, отмените это.