帶有多個 Web 應用程式的 Linode (Debian) 盒子 - 是否可以透過 sendmail 從多個網域發送電子郵件?

帶有多個 Web 應用程式的 Linode (Debian) 盒子 - 是否可以透過 sendmail 從多個網域發送電子郵件?

我有一個 Linode 實例,將在其中託管幾個小型 LEMP 應用程式。這些應用程式中的每一個都需要向用戶發送電子郵件(主要用於帳戶註冊......論壇/評論等等)。我希望能夠僅使用 sendmail 來完成此操作,因為它已經安裝在系統上。那可能嗎?我預計不會有大量流量/電子郵件使用,因此我使用 Google 的 SMTP 伺服器:

在此輸入影像描述

這個想法是 sendmail 將是一個空客戶端 - 它可以發送郵件(並且我已經從中收到系統通知(OSSEC、Fail2ban)),但不能接收傳入的郵件。任何應用程式聯絡表單/機制都會向應用程式本身的擁有者發送一條訊息,然後他們可以透過自己的電子郵件直接與他們進行通訊。不過,我有幾個問題:

  1. 是否可以進行配置,以便每個應用程式都有自己的傳出電子郵件地址/身分?我已將每個應用程式分離到自己的 Linux 用戶中,而無需 sudo 存取權限。因此(虛構名稱),Bob's Widget Emporium 是自己的獨立用戶,Sally's Awesome Politics Views 也是如此。由於虛擬託管,每個應用程式都透過 Linode 的雲端 DNS 管理器擁有自己的網域記錄。
  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

  1. 是的。某些應用程式支援指定「寄件者」位址。否則,您可以利用 sendmail 的 genericstable 功能,該功能

將導致不合格的地址(即沒有網域)和具有在類別 {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]
  1. 您需要使郵件伺服器的正向和反向 DNS 相符。您需要為您將使用的網域設定 SPF。如果IP出現在http://www.anti-abuse.org/multi-rbl-check/你需要獲得一個不同的IP。 (考慮使用託管郵件服務。運行郵件伺服器很煩人,因為垃圾郵件發送者會破壞一切。但是,既然您使用的是 sendmail,您一定喜歡痛苦。)

  2. 預設情況下,sendmail 僅偵聽本機主機,因此您無需執行任何操作。如果您已設定為偵聽所有接口,則撤銷該操作。

相關內容