не ходит pop/imap/smtp через squid

Discussion in 'Linux, Freebsd, *nix' started by Kavabango, 30 Mar 2010.

  1. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Добрый день, форумчане:) Собственно столкнулся с такой проблемой(сабж). У меня интернет через прокси(gentoo+squid) Подскажите как реализовать чтоб через прокси ходили почтовики. Перенаправление с одного сервиса сделать не могу, так как клиентов много почты разные(mail.ru, gmail.com, etc) Клиенты и прокси в разных сегментах сети, авторизация по IP.
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Навскидку добавьте 25 и 110 порты в список разрешенных портов (в squid.conf)

    Туплю: squid не кэширует SMTP/POP/IMAP. Смотрите правила iptables
     
    #2 krypt3r, 31 Mar 2010
    Last edited: 1 Apr 2010
  3. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Чтоб наглядней было кусок 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 сессии, но при этом пишут что у кого то на прозрачном прокси все работает, почта ходит.
    Сам понять че куда завернуть на файерволе/сквиде как то не могу...
     
  4. Hobba

    Hobba New Member

    Joined:
    30 Mar 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    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

    Примерно так
     
  5. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Hobba: спасибо, я примерно о этом же думал. Но проблемма в том что почтовых сервисов несколько. Как тогда быть?
     
  6. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    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
    
    :D
     
  7. S][amaN

    S][amaN New Member

    Joined:
    14 Feb 2010
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    хм насколько я знаю squid http-прокси и почта через него никак неходит, здесь нужно iptables разруливать, shellz[21h] нагладно показал у меня на паре серваков что то похожее есть, я там банк клиент разруливал)
     
  8. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Да. На самом деле так и есть. Squid не поддерживает pop3 сессии это точно. Разруливать все это дело надо через iptables. А тут у меня видимо не хватает знаний:( Я не совсем понимаю как это все будет происходить...Я поставлю переброс портов на iptables на локальные порты с почтовиков(Естественно работает squid и на локальных машинах прописан адрес прокси).
    Теперь основная непонятка. Когда машина полезет в инет за почтой, откуда она узнает с какого компа ее собирать. На squid она не идет(как я понимаю), а клиенты и прокси сервер вообще в разных сегментах сети..(типа у клиентов 192.168.0.0/24 а на сервере 10.187.0.0/16. Цифры взяты из головы просто для примера)
    Буду благодарен, если кто поможет обьяснить.
    за контактами(ICQ,jabber etc.) в личку
     
  9. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Сделал примерно как предлагали
    кусок кода
    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
    но это немного не то по моему. Как быть?
     
  10. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    Сегодня посмотрел внимательней конфиг ядра, нашел немного в другой секции
    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
    ...
    
    Очень похоже на то что нужно, но все таки смущает что не так как в руководстве...