%20%D1%81%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D0%BC%D0%B8%20%D0%B2%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8%20%E2%80%94%20%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%BB%D0%B8%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%82%D1%8C%20%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%B8%D1%81%D1%8C%D0%BC%D0%B0%20%D1%81%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85%20%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20sendmail%3F.png)
У меня есть экземпляр Linode, в котором я собираюсь разместить несколько небольших приложений LEMP. Каждое из этих приложений должно отправлять электронные письма пользователям (в основном для регистрации аккаунтов... форумов/комментариев и всего такого). Я бы хотел иметь возможность просто использовать sendmail для этого, поскольку он уже установлен в системе. Возможно ли это? Я не ожидаю большого трафика/использования электронной почты, поэтому я использую SMTP-сервер Google:
Идея в том, что sendmail будет нулевым клиентом — он может отправлять почту (и я уже получаю от него системные уведомления (OSSEC, Fail2ban)), но не получать входящую почту. Любая контактная форма/механизм приложения отправляет сообщение владельцу самого приложения, посредством чего он может напрямую общаться с ним через его собственную электронную почту. Однако у меня есть несколько вопросов:
- Можно ли настроить все так, чтобы каждое приложение имело свой собственный исходящий адрес электронной почты/идентификатор? Я выделил каждое приложение в отдельного пользователя Linux без доступа sudo. Итак (вымышленные имена), Bob's Widget Emporium — это отдельный пользователь, как и Sally's Awesome Political Views. Каждое приложение имеет собственную запись(и) домена через облачный DNS-менеджер Linode из-за виртуального хостинга.
- Что мне нужно сделать, чтобы эти письма не считались спамом? И будет ли эта настройка сделана на уровне централизованного ящика или для каждой учетной записи?
- Что мне нужно сделать, чтобы заблокировать входящие письма из внешних источников? Мои 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
- Да. Некоторые приложения поддерживают указание адреса "от". В противном случае вы можете использовать функцию genericstable от sendmail, которая
приведет к тому, что неквалифицированные адреса (т. е. без домена) и адреса с доменом, указанным в классе {G}, будут найдены на карте и преобразованы в другую («общую») форму, которая может изменить как доменное имя, так и имя пользователя.
Пример:
FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
В /etc/mail/genericstable
bob [email protected]
sally [email protected]
Вам необходимо, чтобы прямой и обратный DNS почтового сервера совпадали. Вам необходимо настроить SPF для доменов, которые вы будете использовать. Если IP-адрес появляется вhttp://www.anti-abuse.org/multi-rbl-check/вам нужно получить другой IP-адрес. (Рассмотрите возможность использования управляемой почтовой службы. Работа почтового сервера раздражает, поскольку спамеры все портят. Однако, поскольку вы используете sendmail, вам, должно быть, нравится боль.)
sendmail по умолчанию слушает только на localhost, так что вам не нужно ничего делать. Если вы настроили прослушивание на всех интерфейсах, то отмените это.