Добрый день, форумчане Собственно столкнулся с такой проблемой(сабж). У меня интернет через прокси(gentoo+squid) Подскажите как реализовать чтоб через прокси ходили почтовики. Перенаправление с одного сервиса сделать не могу, так как клиентов много почты разные(mail.ru, gmail.com, etc) Клиенты и прокси в разных сегментах сети, авторизация по IP.
Навскидку добавьте 25 и 110 порты в список разрешенных портов (в squid.conf) Туплю: squid не кэширует SMTP/POP/IMAP. Смотрите правила iptables
Чтоб наглядней было кусок squid.conf Code: ########open ports ############## acl icq_ports port 443 445 563 5190 acl open_ports port 80 8000 acl open_ports port 21 25 acl mail_ports port 995 465 587 # pop.gmail.com acl mail_ports port 993 # imap.gmail.com acl mail_ports port 110 2525 # pop.mail.ru acl open_ports port 1025-65535 #unregistred ports ...... ######## access rules ########### http_access allow localhost http_access allow free_user http_access allow icq_ports http_access allow open_ports http_access allow mail_ports http_access deny all icp_access deny all miss_access allow free_user miss_access deny all# в iptables тоже все открыто. Где то нашел инфу что squid не может проксировать pop3 сессии, но при этом пишут что у кого то на прозрачном прокси все работает, почта ходит. Сам понять че куда завернуть на файерволе/сквиде как то не могу...
iptables: LOCALNET=192.168.1.0/24 MAILSERVER=87.250.251.37 iptables -A FORWARD -p tcp -s $LOCALNET -d $MAILSERVER --dport 25 -j ACCEPT iptables -A FORWARD -p tcp -s $MAILSERVER -d $LOCALNET --sport 25 -j ACCEPT iptables -A FORWARD -p tcp -s $LOCALNET -d MAILSERVER --dport 110 -j ACCEPT iptables -A FORWARD -p tcp -s MAILSERVER -d $LOCALNET --sport 110 -j ACCEPT iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 110 -j MASQUERADE iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 25 -j MASQUERADE Примерно так
Hobba: спасибо, я примерно о этом же думал. Но проблемма в том что почтовых сервисов несколько. Как тогда быть?
Code: #!/bin/bash LOCALNET=192.168.1.0/24 for MAILSERVER in 87.250.251.37 87.250.251.37 ... ; do iptables -A FORWARD -p tcp -s $LOCALNET -d $MAILSERVER --dport 25 -j ACCEPT iptables -A FORWARD -p tcp -s $MAILSERVER -d $LOCALNET --sport 25 -j ACCEPT iptables -A FORWARD -p tcp -s $LOCALNET -d MAILSERVER --dport 110 -j ACCEPT iptables -A FORWARD -p tcp -s MAILSERVER -d $LOCALNET --sport 110 -j ACCEPT iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 110 -j MASQUERADE iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 25 -j MASQUERADE done
хм насколько я знаю squid http-прокси и почта через него никак неходит, здесь нужно iptables разруливать, shellz[21h] нагладно показал у меня на паре серваков что то похожее есть, я там банк клиент разруливал)
Да. На самом деле так и есть. Squid не поддерживает pop3 сессии это точно. Разруливать все это дело надо через iptables. А тут у меня видимо не хватает знаний Я не совсем понимаю как это все будет происходить...Я поставлю переброс портов на iptables на локальные порты с почтовиков(Естественно работает squid и на локальных машинах прописан адрес прокси). Теперь основная непонятка. Когда машина полезет в инет за почтой, откуда она узнает с какого компа ее собирать. На squid она не идет(как я понимаю), а клиенты и прокси сервер вообще в разных сегментах сети..(типа у клиентов 192.168.0.0/24 а на сервере 10.187.0.0/16. Цифры взяты из головы просто для примера) Буду благодарен, если кто поможет обьяснить. за контактами(ICQ,jabber etc.) в личку
Сделал примерно как предлагали кусок кода Code: $IPTABLES -A FORWARD -p tcp -s 10.2.0.0/16 -d pop.gmail.com --dport 995 -j ACCEPT $IPTABLES -A FORWARD -p tcp -s pop.gmail.com -d 10.3.0.0/16 --sport 995 -j ACCEPT $IPTABLES -A FORWARD -p tcp -s 10.2.0.0/16 -d smtp.gmail.com --dport 465 -j ACCEPT $IPTABLES -A FORWARD -p tcp -s smtp.gmail.com -d 10.3.0.0/16 --sport 465 -j ACCEPT ... $IPTABLES -t nat -A POSTROUTING -p tcp -s 10.2.160.217 --dport 25 -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -p tcp -s 10.2.160.217 --dport 110 -j MASQUERADE не помогает... И еще один вопрос. iptables ругается на любые команды с ключем -m(типа -m mac;-m state;-m multiport...). покурил маны говорят надо в ядре опции типа CONFIG_IP_NF_MATCH_MAC ; CONFIG_IP_NF_MATCH_MULTIPORT ; CONFIG_IP_NF_MATCH_STATE; установить. Открыл конфига там из подобного только Code: # CONFIG_IP_NF_MATCH_ADDRTYPE is not set # CONFIG_IP_NF_MATCH_AH is not set # CONFIG_IP_NF_MATCH_ECN is not set # CONFIG_IP_NF_MATCH_TTL is not set но это немного не то по моему. Как быть?
Сегодня посмотрел внимательней конфиг ядра, нашел немного в другой секции Code: # # Core Netfilter Configuration # .... # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set # CONFIG_NETFILTER_XT_MATCH_MAC is not set # CONFIG_NETFILTER_XT_MATCH_MARK is not set # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set # CONFIG_NETFILTER_XT_MATCH_OWNER is not set # CONFIG_NETFILTER_XT_MATCH_POLICY is not set # CONFIG_NETFILTER_XT_MATCH_STATE is not set ... Очень похоже на то что нужно, но все таки смущает что не так как в руководстве...