Я получаю пачку писем примерно на 20 разных серверах, и я хочу получить на один из них. Ящики работают под управлением Linux, и сейчас мое решение - создать TCP-ретранслятор.
Я хочу, чтобы в любое время трафик, поступающий на порт 25, передавался в ящик где-нибудь еще не в той же локальной сети. У меня есть сценарий Perl, который делает примерно это, но он неэффективен и может дать сбой. Я бы предпочел найти способ использовать iptables/ipchains если есть такой способ. Я думаю, что есть, но у меня нет технических навыков, чтобы понять это.
Может не надо иметь 20 серверов для почты? Вы можете просто настроить MTA (агент передачи почты) на центральном сервере для приема почты для интересующего вас домена и настроить DNS для каждого домена так, чтобы запись MX указывала на центральный сервер.
Если это невозможно, пусть ваши серверы действуют как почтовые шлюзы и ретранслируют почту на центральный сервер. Это решит проблемы эффективности и надежности. Как вы это сделаете, зависит от выбранного вами MTA. Конечно, вам все равно придется настроить центральный сервер для приема почты для всех доменов.
И если вы абсолютно хотите испытать удачу с iptables (не рекомендуется), вы можете сделать что-то вроде:
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 25 -j DNAT --to 192.168.1.50:25
iptables -A INPUT -p tcp -m state --state NEW --dport 25 -i eth1 -j ACCEPT
Я рекомендую подойти к этой проблеме на более высоком уровне сетевого стека. Вместо того, чтобы перенаправлять порты, вы должны просто запустить простой SMTP-сервер на каждом хосте, который перенаправляет все на ваш центральный сервер.
В зависимости от ваших потребностей вы можете использовать:
Возможно, вам удастся решить проблему в DNS.
Просто укажите в записях MX для этих 20 серверов тот сервер, который вы хотите использовать.
Добавьте следующую строку к каждой машине /etc/postfix/main.cf
файл и выдать postfix reload
relayhost = smtprelay.yourdomain.com
Вам необходимо убедиться, что на smtprelay.yourdomain.com
, mynetworks
включает сетевую маску машин, которые вы хотите ретранслировать через эту машину.
Если на ваших машинах уже работает SMTP-сервер, почему бы не настроить на каждом из них псевдоним, указывающий на ваш центральный почтовый сервер?
Кроме того, несколько по теме ... рассмотрите возможность пересылки почты из определенных учетных записей пользователей в централизованный почтовый ящик, используя / etc / aliases, например:
# Person who should get root's mail
root: hostmaster@company.com
Это хороший способ отслеживать такие вещи, как уведомления sudo / sshd / yum с разных серверов в одном почтовом ящике.