Kurmaeff Halit

июнь 2006

halit_at_mail_dot_ru
Семь слоев матрешки, или Настройка 3proxy для чайников
(версия 1.4, исправленная и дополненная, май, 2015 — изменения в работе c почтой на mail.ru и yandex.ru) 
(версия 1.3, исправленная и дополненная, март, 2010 — добавлен FAQ) 

Хочу поделиться своим опытом по настройке замечательного прокси-сервера от Заразы - 3proxy. Долгое время пользовался другим интересным прокси-сервером ES Proxy http://esproxy.org.ua от Георгия Павленко - маленького (всего один exe-шник на 300 кБ), довольно простого в настройке и очень нетребовательного к ресурсам - по крайней мере, при почти сотне пользователей он умудрялся работать на старинном P133, почти не затыкаясь. И только вот это <почти> - иногда все же проксик самопроизвольно пожирал 100% процессора, хотя и продолжал частично или полностью справляться со своими обязанностями - а также то, что автор уже почти 4 года как не подает никаких признаков жизни, то есть продукт замер в развитии - привели к поискам другого подходящего сервера. Скажу сразу - прокси-сервера с красивыми GUI меня привлекали мало, я сторонник принципа <Мне чтобы ехать>, а красивый интерфейс - это, конечно, хорошо, но не в ущерб производительности. Перепробовав не от хорошей жизни 5-6 разных продуктов (среди них Usergate, Proxy+, Lan4net....) и не оставшись довольным получаемыми результатами (должен заметить, что известный продукт от Microsoft я решительно отмел ввиду его высокой стоимости), решил попробовать таки 3proxy, тем паче слышал в основном хорошие отклики. Если кто и жаловался на него, то только на сложность настройки, в чем, должен скачать, немного забегая вперед, я и имел возможность убедиться. 

Найдя в интернете сайт разработчика http://3proxy.ru/, почитал про возможности - и возрадовался. Тут тебе и любые лимиты на каждого пользователя, и ограничение скорости, и FTP, и SOCKS, и порт-мапперы, и даже работа как под Windows, так и под любыми никсами. Более того, есть и некоторые уникальные возможности - вроде ведения журналов через ODBC или задание произвольного формата логов, так что логи можно будет <скормить> любому лог-анализатору. В общем, всё, что может понадобиться системному администратору, чтобы и пользователей удовлетворить, и не пускать их же куда не нужно... Не хватает разве что кэширования  да еще пары мелочей, но это все обещается уже в скором будущем, да и по содержанию форума, оперативным ответам на вопросы пользователей и содержимому changelog'а версии 0.6 видно, что работа над совершенствованием сервера идет полным ходом. 

Скачав дистрибутив (555 кБ! в актуальной на момент написания статьи версии devel 0.6), я погрузился в изучение образца конфигурационного файла, который прилагался в комплекте. По ходу изучения возникло немало вопросов. С того же сайта пришлось скачать и распечатать, чтобы неспешно изучить, FAQ и HowTo. Когда и эти материалы были изучены, оказалось, что вопросов меньше не стало. Попытки запустить прокси были первоначально безуспешными, пришлось почитать материалы конференции, где и был найден образец очень простого конфигурационного файла, построенного по принципу <разрешить все и всем>. Кстати, вот он (версия 0): 
auth none 
log
proxy 

Все гениальное, как говорится, просто. А моя ошибка заключалась, кстати, как раз в том, что я пытался сразу написать рабочий конфиг со всеми лимитами и т.д. 
Важно! Конфиг файл в общем случае должен находиться в одной папке с исполняемым файлом 3proxy.exe (по умолчанию в папке bin). Иначе надо запускать исполняемый файл с указанием пути к конфигу. 
В 90% случаях этот конфиг будет работать. Разберемся в нем. 
В первой строчке указывается, что авторизация не требуется, соответственно, доступ получают все юзеры без исключения. Если вы попытаетесь ввести после этой команды какие-то ограничения доступа, то они не сработают, о чем и сообщается в FAQ. 
Во второй строке задаем ведение лога, при этом не указываем путь к файлу, следовательно, лог будет выводиться на экран. 
И, наконец, запускаем сам прокси на стандартном порту 3128. 
Многие параметры опущены, соответственно, для них прокси возьмет значения по умолчанию. Теперь можете на всех пользовательских компьютерах настроить ваш любимый браузер - не знаю, как у вас, а у меня это почетное место уже лет 8 занимает Opera - в его сетевых настройках поставить галочку "использовать прокси", а затем для всех протоколов указать IP вашего прокси-сервера и порт 3128.
 Если вам не нужен учет и контроль, мало интересует безопасность сети, а трафик у вас безлимитный, то можно этим и ограничиться, по крайней мере на первое время. Можно даже удалить вторую строчку, она не обязательна. 
В начале конфига можно было бы еще поставить строчку service, для того, чтобы сервер запускался как служба, а не отдельным приложением. В этом случае его надо будет предварительно установить как службу командой 3proxy --install. 
Но не спешите этого делать! Дело в том, что будучи запущен приложением, 3proxy будет сразу выдавать на экран сообщения об обрабатываемых запросах и ошибках и вам не придется смотреть текстовые логи. Причем, что особенно радует, с указанием кода ошибки и номера строки в конфиге, где эта ошибка присутствует. А на стадии обучения это очень помогает. 
Да, и еще одно важное замечание насчет конфига - никаких лишних пробелов, табуляций и т.п. знаков в начале строки, иначе строка конфига будет считаться закоментированной и значит, не будет обрабатываться. 

Опишем предполагаемую ситуацию. Надо "пустить интернет" на 3 компьютера с IP адресами 192.168.0.2,192.168.0.3,192.168.0.4, в качестве прокси-сервера выступает компьютер с двумя сетевыми картами, внутренним IP-адресом 192.168.0.1 и "внешним", то есть полученным от провайдера адресом 211.80.11.12. От провайдера же получены адреса DNS-серверов: 213.153.100.1 и 213.153.101.1. 
У провайдера доступен SMTP-сервер smtp.provider.ru. 
На компьютере с адресами 192.168.0.2-192.168.0.4 работают пользователи Иванов, Петров, Сидоров соответственно. 
Прокси-сервер установим в папку c:\3proxy, хотя установим - это громко сказано, для начала его можно просто распаковать из zip-архива в заданную папку, пусть это будет c:\3proxy (про инсталляцию службы было сказано выше). 

Теперь последовательно займемся дальнейшим улучшением нашего замечательного конфига. 

Для начала укажем внутренний: 

internal 192.168.0.1 
- вы ведь понимаете, что здесь должен стоять IP сетевой карты ВАШЕГО прокси сервера, настроенной на локальную сеть. Эта команда задает именно тот IP адрес в локальной сети, к которому будут обращаться клиенты и который, соответственно, будет прописан в браузерах в качестве прокси-сервера 

и внешний интерфейсы для прокси-сервера: 

external 211.80.11.12
-	а этот IP адрес вы должны были получить от провайдера, как правило, в случае выделенной линии это так называемый "реальный" IP, который должен быть доступен из интернета (хотя это не обязательно).
-	Если же у вас коммутируемый доступ: dial-up или vpn и ваш внешний IP регулярно меняется, то  есть 2 способа решения проблемы. Первый — написать скрипт, который будет подставлять внешний IP через include либо $ (это мы обсудим позже). Второй — использовать команду 
-	external 0.0.0.0

Необходимое замечание - командами external и internal мы задаем внутренние и внешние интерфейсы, так сказать, глобально, на весь конфиг и на все службы. Если есть необходимость для отдельных служб задавать свои интерфейсы, то это можно сделать с помощью параметров службы -e и -i, например, аналогом совокупности команд 

internal 192.168.0.1 
external 211.80.11.12
proxy 

будет команда 

proxy -i192.168.0.1 -e211.80.11.12
Теперь для ускорения процесса разрешения имен хостов укажем DNS-сервера - лучше всего указать DNS-сервера вашего провайдера - и запустим кэширование DNS: 

nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
где вместо 65536 может быть любое, желательно представляющее степень числа 2 и достаточно большое. Кстати, от значения nscache напрямую зависит количество оперативной памяти, занимаемой 3proxy. Итак, на данном этапе наш конфиг выглядит следующим образом (версия 1): 

internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
log
auth none 
proxy 
Кажется, нам еще не хватает полноценного логирования всех доступов и ошибок, ведь на экране лог очень быстро пролетает! Поменяем команду log на более расширенную 

log c:\3proxy\logs\3proxy.log D
Таким образом, мы даем команду сохранять логи в папке c:\3proxy\logs и каждый день начинать новый лог (опция D). Еще раз напомню, что на стадии тестирования лучше все же сделать вывод логов на экран - так удобнее искать ошибки. И еще добавим команду 

rotate 30
для того, чтобы в папке с логами сохранялись лишь последние 30 файлов, а то логи так быстро растут, а диск не резиновый! 

Вспоминаем, что 3proxy позволяет нам видоизменить формат логов, чтобы можно было их обрабатывать любым лог-анализатором. Кстати, могу посоветовать скачать с сайта www.wrspy.ru довольно приличный и, что сейчас немаловажно, бесплатный лог-анализатор Wrspy нашего отечественного программиста. Тем более что автор анализатора любезно пошел навстречу моей просьбе и начиная с версии 1.65 появилась, наконец, так сказать, оптимизированная поддержка 3proxy - именно для логов приведенного ниже формата:

logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"

При этом надо иметь в виду, что данный формат будет работать с версией прокси 0.6.

В этом случае логи примут вид: 

192.168.0.4 - ivanov - [02/Jun/2006:11:13:56 +0500] 
"GET http://svalka.biz/uploads/posts/1147559374_00.jpg HTTP/1.0" 000 17497 457 PROXY/http://svalka.biz:3128 

-	где идут по порядку: IP рабочей станции - имя пользователя - число, месяц, год и время - вид запроса - URL - номер ошибки (если 000 - значит, ошибок нет) - принято байт - отправлено байт - сервис - хост - порт, по которому клиент связался с сервисом.
Немного забегая вперед, скажу, что логирование в 3proxy позволяет удовлетворять довольно разнообразные запросы, , к примеру, можно вести отдельные логи для служб или отдельные логи для одной службы с разными форматами.

Ну и наконец, если вы хотите еще больше сэкономить места на диске под логи, то их можно архивировать с помощью любого доступного архиватора, например, вот так: 

archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
(подсказку для опций командной строки WinRAR можно найти в его же Help'е) 
Обратите внимание на то, что путь к файлу заключен в скобки. Это связано с наличием пробела в пути. Аналогично надо заключать в кавычки любые пути Windows, содержащие в себе пробелы либо $.

Можно собирать продвинутую версию (версия 2) нашего конфига: 

internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
auth none 
proxy -t

Запускаем прокси с опцией -t , которая позволяет не выводить в лог служебные сообщения о запуске служб. Это пригодится в дальнейшем, когда надо будет обрабатывать логи каким-нибудь анализатором.

Все лучше и лучше! Продолжаем. Подумаем о том, что пользователей много, а канал, может, и не очень толстый, хорошо, если хотя бы 128 кб, а если диалап на 33.6? Начинаем резать, товарищи! 

bandlimin 240000 * 192.168.0.2,192.168.0.3
- разрешаем качать компьютерам с IP-адресами 192.168.0.2 и 192.168.0.3 со скоростью 24 кбит в секунду, причем это 24 кбит приходятся не на каждый из этих компьютеров, а на оба в совокупности, т.е. если оба будут к примеру, качать одновременно файлы с достаточно быстрых сайтов, то каждому придется только по 12 кбит в секунду (заметьте, килобит, а не килобайт, если надо пересчитать в килобайты, разделите числа на 8) 

bandlimin 48000 * 192.168.0.4
- а этому счастливчику единолично скорость 48 кбит в секунду 

bandlimout 24000 *
- исходящую скорость тоже ограничим всем до 24 килобит в секунду (сейчас эта команда работает только в версии devel 0.6) Ну и наконец, если вы хотите, чтобы эти жесткие ограничения не касались, к примеру, скачивания почты, то снимите ограничения на порт 110: 

nobandlimin * * * 110

и не забудьте поставить эту команду ПЕРЕД прочими командами ограничения скорости - конфиг обрабатывается последовательно до первого удовлетворяющего условия. 

Скорости скачивания-закачивания мы уже задали, продолжаем закручивать гайки. В этом нам помогут команды deny и allow 
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
- запрещаем получение почты пользователю с IP .4 в нерабочее время по будням 

allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
- разрешаем доступ в интернет пользователю с IP .4 исключительно с понедельника по пятницу с 9 часов утра до 6 вечера, но зато разрешены запросы на любые порты, то есть можно и с FTP-серверов качать, и HTTPS, к примеру. 

Кстати, для того, чтобы получить доступ к FTP через браузер, в соответствующем окне настроек браузера (параметры прокси-сервера) надо поставить галочку напротив FTP и поставить IP прокси-сервера и порт, который используется и для HTTP (в нашем случае 3128), а вовсе не 21, как можно было подумать. И еще одно грустное замечание. Текущая версия браузера Opera под номером 9 некорректно работает через прокси с фтп-серверами, требующими авторизацию, так что либо придется вернуться к версии 8, либо пользоваться IE или FireFox. 

allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
- а здесь разрешаем только WEB-серфинг, зато круглосуточно и любой день недели 

Кстати вспоминаем (вы ведь уже медитировали над man, FAQ и HowTO, не правда ли?), что команда 

auth none
собственно никакую авторизацию не дает, т.к. отключает любую авторизацию совсем и команды allow и deny после нее теряют всякий смысл. Пора перейти на что-нибудь более подходящее, в нашем случае это авторизация по IP: 

auth iponly
Снова собираем очередную версию конфига с учетом вышенаписанного (версия 3): 

internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
auth iponly 
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
deny *
proxy -t

После всех ACL (access client list — список доступа клиентов), т.е. всех allow и deny добавили еще один deny * - это позволит избавиться от надоедливых окон запроса логина и пароля, выскакивающих при попытке загрузке какого-нибудь запрещенного в конфиге ресурса.

Продолжим наше увлекательное занятие. Учет и контроль - вот один из основных наших принципов. А какой же учет без счетчиков? Они определяются командами counter, countin и nocountin. 

counter "c:\3proxy\3proxy.3cf"
- этим мы задаем, где у нас будет хранить общий файл хранения всех всех счетчиков. Он представляет собой файл в двоичном формате, причем он всегда один на всех. 

Эту команду можно было бы задать в формате 

counter "c:\3proxy\3proxy.3cf" D "C:\3proxy\traf\traf"
-	тогда каждый день (частота задается в данном случае параметром D(ежедневно) - на месте D могли быть W(еженедельно), M(ежемесячно) или H(ежечасно)) в папке C:\3proxy\traf\traf будет генерироваться файл отчета в текстовом формате, который позволит нам при необходимости посмотреть статистику за любой день. Посмотрите получаемые отчеты в блокноте, там все понятно.
Учтите, что файл отчета в нашем случае будет генерироваться в конце суток, не стоит ждать его появления сразу. 

countin "1/Иванов" M 50 * 192.168.0.2 * * *
countin "2/Петров" M 80 * 192.168.0.3 * * *
countin "3/Сидоров" M 30 * 192.168.0.4 * * *
-	а эти команды задают разные месячные (M) лимиты входящего (счетчик на исходящий трафик, кстати, автор программы тоже обещает сделать) трафика в мегабайтах на компьютеры с IP-адресами 192.168.0.2-192.168.0.4, причем трафик в нашем случае считается на всех портах и для всех протоколов.
Иногда нужно какому-то пользователю дать неограниченный трафик, но при этом вести учет трафика . Что делать в этом случае? Самое простое решение — дать пользователю такое значение трафика, которое он не сможет скачать при всем желании, например, пару терабайт.  Или нужно дать пользователю определенную квоту на трафик, но на неограниченный период времени. В таком случае можно поставить счетчик с периодом действия N (никогда) либо Y(год).
Важно - номера счетчиков (в нашем случае 1,2,3) не должны совпадать. Имена, вернее, фамилии пользователей интернета, идущие после косой черты - приведены для удобства, именно они будут читаться на странице статистики, но это позже... 
Если у вас появится желание знать текущий общий израсходованный трафик для всех пользователей, то не спешите вооружаться калькулятором, это можно сделать средствами 3proxy. Достаточно задать счетчик,  учитывющий трафик всех пользователей, например, так:

countin 100/month M 1000000 * 
countin 101/day D 1000000 *

Первая строчка задает общий месячный счетчик, вторая общий дневной. Теперь на страничке статистики у каждого пользователя (не только у администратора) появятся две строчки, указывающие текущие месячный и дневной трафики, проходящие через прокси-сервер. 

Команда nocountin, соответственно, позволяет не считать трафик по заданному ряду параметров. Например, командой 

nocountin * 192.168.0.4 * 110 *
помещенной ПЕРЕД счетчиками countin, можно отключить подсчет трафика для компьютера с IP .4 при получении почты по 110 порту. 

Надо иметь в виду, что даже после исчерпания трафика существующие соединения не обрываются и, к примеру, в аське пользователь может просидеть до конца дня даже при превышении трафика. Или, к примеру, можно закачать  большой файл, значительно превышающий выделенный трафик — при условии, что прокси не сможет определить его размер в начале процесса закачки. А вот создать новое соединение после превышения  трафика уже не удастся.

Снова собираем очередную версию конфига с учетом вышенаписанного (версия 4): 

internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
counter "c:\3proxy\3proxy.3cf" D "C:\3proxy\traf\traf"
nocountin * 192.168.0.4 * 110 *
countin "1/Иванов" M 50 * 192.168.0.2 * * *
countin "2/Петров" M 80 * 192.168.0.3 * * *
countin "3/Сидоров" M 30 * 192.168.0.4 * * *
auth iponly 
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
proxy -t
Ну вот, мы уже почти все настроили, но ведь интернет - это не только WEB-серфинг и FTP. Электронная почта! Вот ей мы и займемся. Для начала настроим получение почты. Для этого в составе 3proxy имеется свой pop3-прокси: 

pop3p
В этом случае надо будет настроить ваши мэйл-клиенты. Если, к примеру, для ящика vasya.pupkin@mail.ru в настройках моего любимого TheBat! в настройках доставки почты (закладка Транспорт) раньше стояли такие параметры: 

pop3-сервер: pop.mail.ru 
пользователь: vasya.pupkin 

то чтобы получать почту через прокси, надо будет их поменять на следующие: 

pop3-сервер: 192.168.0.1 
пользователь: vasya.pupkin@pop.mail.ru 

- внимание, именно последовательность "имя пользователя"@"POP3-сервер вашего ящика", а не ваш адрес. 

Для большей наглядности рассмотрим еще вариант настройки клиента: 

pop3-сервер: mail.example.com 
пользователь: vasya.pupkin@example.com 

Тогда для получения почты через прокси пришлось бы поменять настройки клиента на следующие: 

pop3-сервер: 192.168.0.1 
пользователь: vasya.pupkin@example.com@mail.example.com 

В качестве разделителя здесь выступает @, но если нужно, можно использовать другой символ, используя для этого команду delimchar:

delimchar #

Что же касается отправки почты, то разработчик нашего замечательного прокси-сервера рекомендует воспользоваться для этого портмаппингом: 

tcppm -i192.168.0.1 25 smtp.provider.ru 25
то есть, не мудрствуя лукаво, мы просто все запросы по порту 25, по которому, собственно, и отправляются почтовые сообщения, перекидываем на 25-ый же порт почтового сервера провайдера. 

В настройках вашего почтового клиента в этом случае для упомянутого выше ящика в общем случае поменяется запись только для SMTP-сервера: 

SMTP-сервер: 192.168.0.1 

Должен заметить, что  прием с портмаппингом можно было бы использовать и для получения почты. В этом случае используется команда: 

tcppm -i192.168.0.1 2110 pop.mail.ru 110
Есть в этом варианте одна неприятная сторона - если пользователи будут пользоваться ящиками на разных почтовых серверах, благо что их много развелось (yandex, rambler,newmail...), то для каждого почтового сервера придется завести новую запись портмаппинга в нашем конфиге, к примеру: 

tcppm -i192.168.0.1 3110 pop.yandex.ru 110
Впрочем, вряд ли их число даже в большом офисе превысит 10-15. 

В этом случае параметры ящика в мэйл-клиенте будут следующие: 

pop3-сервер: 192.168.0.1 
пользователь: vasya.pupkin 

и дополнительно надо будет поменять порт на 2110 и не забыть дать пользователям разрешение на этот нестандартный порт: 

allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00
Какой из способов получения почты выбирать - дело вкуса, мне более привычен портмаппинг, его и будем использовать. 

Впрочем, прогресс не стоит на месте и теперь для отправки почты есть smtp-прокси, работающий аналогично pop3p:

smtpp

Почтовые клиенты настраиваются аналогично настройке с pop3p: порт и пароль остаются без изменений, вместо pop3-сервера указываем IP прокси-сервера, а в поле имени пользователя забиваем имя пользователя@POP_SERVER. 
Рассмотрим на примере ящика ivan@mail.ru. 
В поле «Учетная запись» вносим ivan@smtp.mail.ru, порт 25 остается  без изменений, как и пароль. А в поле «Сервер исходящей почты» забиваем IP прокси-сервера.

Собираем очередную версию конфига с получением почты через pop3p (версия 5): 

internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
counter "c:\3proxy\3proxy.3cf" D "C:\3proxy\traf\traf"
nocountin * 192.168.0.4 * 110 *
countin "1/Иванов" M 50 * 192.168.0.2 * * *
countin "2/Петров" M 80 * 192.168.0.3 * * *
countin "3/Сидоров" M 30 * 192.168.0.4 * * *

auth iponly 
allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
proxy 

# ПОЧТА
flush
auth iponly
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
tcppm -i192.168.0.1 2500 smtp.provider.ru 25
pop3p
smtpr
в случае получения почты через портмаппинг секция конфига, идущая после коментария # ПОЧТА выглядела бы немного по другому: 

# ПОЧТА
flush
auth iponly
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
tcppm -i192.168.0.1 2500 smtp.provider.ru 25
tcppm -i192.168.0.1 2110 pop.mail.ru 110
tcppm -i192.168.0.1 3110 pop.yandex.ru 110

Вы, наверное, заметили новую команду flush. Мы ее применили для сброса заданного выше списка доступа, чтобы можно было изменить разрешения доступа для пользователей. Замечу, что сброс не действует на ограничение скорости, которое действует на все службы. И не забываем после его применения задавать способ авторизации. 

Учтите, что smtpr по умолчанию занимает порт 25, поэтому на этом порту не должны висеть другие службы. 

И наконец, рассмотрим важную составляющую прокси-сервера - WEB-интерфейс администрирования. Для доступа к нему надо запустить команду 

admin 

Для доступа к интерфейсу пропишите в адресной строке браузера следующий адрес: http://192.168.0.1:80, не забыв, конечно, дать разрешение пользователю на использование стандартного для службы admin порта 80. В открывшемся окне можно будет получить доступ к информации о максимально допустимом трафике и его текущем значении, посмотреть конфиг целиком и даже перезапустить прокси-сервер. Поэтому разрешения на эту службу раздавайте крайне внимательно! Впрочем, у службы admin есть ключ -s, который не дает делать пользователю ничего недозволенного.
Надо только иметь в виду, что для просмотра статистики в браузере пользователей надо будет поставить галочку Не использовать прокси для и указать в нижестоящем поле ай-пи адрес прокси-сервера​, в нашем случае это  192.168.0.1
 Считаю своим долгом упомянуть о команде writable, которая, будучи размещена в самом начале конфига, дает возможность не только читать конфиг через WEB-интерфейс, но и менять его! Автор программы предлагает дважды подумать, прежде чем включать эту опцию. Что касается конфига, есть еще одна замечательная команда, мимо которой я не могу пройти. Это команда monitor, которая позволяет прокси-серверу следить за файлом конфигурации (и не только основным файлом 3proxy.cfg, но и любым другим, включаемым в конфиг ) и в случае обнаружения в ней изменений незамедлительно (по моим наблюдения, через 2-3 секунды после сохранения) загружать новую конфигурацию. Просто отличная возможность, которой мне так не хватало в ES Proxy! 
Только надо иметь в виду, что эти две команды — writable и monitor - нельзя применять вместе.

monitor "c:\3proxy\bin\3proxy.cfg"
Разумеется, команда монитор может работать не только с основным конфигом прокси-сервера. Дело в том, что в конфиг можно включать отдельные текстовые файлы со списками пользователей, сетей, паролей и т.д. Для этого используется макрос $. Например, чтобы не записывать в основной конфиг большой список IP адресов компьютеров, имеющих доступ к почте, мы можем создать текстовой файл IP_list.txt, в него внести через запятую (без пробелов!) все нужные нам IP, тогда команда, задающая список доступа к почте и выглядящая так: 

allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 2110,25,110 * 1-5
00:00:00-20:00:00
может быть заменена командой 

allow * $"c:\3proxy\IP_list.txt" * 2110,25,110 * 1-5 00:00:00-20:00:00
Тогда мы можем задать слежение и за списком адресов из файла IP_list.txt командой 

monitor "c:\3proxy\bin\IP_list.txt"
Еще одна замечательная особенность прокси-сервера - при использовании команды monitor мы можем не только корректировать конфиг и все изменения будут приниматься на лету, но и, к примеру, подменить его другим вариантом, так как файл не блокируется сервером, а только отслеживается на наличие изменений. Это бывает очень удобно. Например, у меня есть два готовых конфига - один для работы через ADSL, второй - для работы через ускоритель спутникового интернета, конфиги отличаются довольно значительно. При необходимости переключиться на другой канал я переименовываю (или переношу в другую папку) исходный конфиг, вместо него ставлю другой - и пользователи даже ничего не успевают заметить, так как прокси не нужно ни останавливать, ни даже ставить на паузу. Отличная фича, не знаю ни одного другого прокси-сервера с такой! Необходимое замечание: эта фича с изменением конфига на лету не работает в сочетании с writable. 

Да, чуть не забыли еще две службы - FTP-прокси и SOCKS-прокси, запускаемые командами 

ftppr 
socks
По умолчанию они устанавливаются на порты 21 и 1080 соответственно.
 Служба ftppr позволяет запустить "настоящий" FTP-прокси, с поддержкой всего стандартного набора команд протокола FTP, не забудьте в настройках вашего FTP-клиента (в моем случае это FAR) указать прокси-сервер 192.168.0.1 на порту 21. А служба SOCKS позволит вам пользоваться, к примеру, вашей любимой аськой, соответственно в ее настройках надо будет указать службу SOCKS5, сервер 192.168.0.1 и порт 1080. 
Но ICQ можно пропустить не только через SOCKS, но и через специальный прокси icqpr. Например, если у одного из пользователей номер ICQ 123456789, то в конфиге можно будет написать:

flush
auth useronly
allow 123456789
icqpr 5190 login.icq.com 5190

Обратите внимание на специальный  вид авторизации useronly. Те, кому будет лень прописывать номера для каждого пользователя, вторую строчку могут прописать так:
allow *

Если используется icqpr, то настройка клиента будет специфической. Не надо ставить галочку «Использовать прокси», а вот вместо предлагающего по умолчанию сервера login.icq.com надо будет внести IP нашего прокси-сервера.Осталось привести получившийся рабочий вариант конфига (версия 6): 

service
internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
monitor "c:\3proxy\bin\3proxy.cfg"
monitor "c:\3proxy\IP_list.txt"
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
counter "c:\3proxy\3proxy.3cf" D "C:\3proxy\traf\traf"
nocountin * 192.168.0.4 * 110 *
countin "1/Иванов" M 50 * 192.168.0.2 * * *
countin "2/Петров" M 80 * 192.168.0.3 * * *
countin "3/Сидоров" M 30 * 192.168.0.4 * * *

auth iponly 
allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
proxy 

# ПОЧТА
flush
auth iponly
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
tcppm -i192.168.0.1 2500 smtp.provider.ru 25
tcppm -i192.168.0.1 2110 pop.mail.ru 110
tcppm -i192.168.0.1 3110 pop.yandex.ru 110
pop3p

flush
auth iponly
allow * 192.168.0.2,192.168.0.3 * 21,1080 * 1-5 00:00:00-20:00:00
ftppr 
socks

flush
allow *
icqpr

flush
auth iponly
allow * 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
admin 

Здесь мы запускаем прокси-сервер уже не как приложение, а как службу, для этого используется команда service. Напоминаю, что установка службы производится командой из командной строки Windows либо любого файл-менеджера: 

3proxy --install 

Службы не обязательно должны висеть на стандартных портах, любую из них можно сконфигурировать на другой порт опцией -pНОМЕР_ПОРТА, например: 

proxy -p8080
ftppr -p2121
admin -p8081
Хочу прояснить на примерах еще один момент, который я сам понял не сразу и понимание которого, возможно, может вызвать проблемы и у вас. Это использование авторизации auth strong. Предположим, что нам хочется, что доступ к WEB-администрированию был доступен только с компьютера 192.168.0.4, причем даже в этом случае запрашивался пароль доступа. В этом случае соответствующая секция конфига будет выглядеть так: 

flush
auth strong
allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
deny *
admin
И разумеется, прежде чем пользоваться авторизацией strong, надо завести пользователя, в нашем случае это Administrator: 

users Administrator:CL:password
Теперь при попытке доступа на страницу WEB-администрирования с компьютера Сидорова будет запрашиваться пароль, а на других компьютера доступ будет полностью закрыт. Команда deny * всегда присутствует неявно в конце любого списка доступа, и ее можно было бы не указывать, но если ее не будет, то пароль будет запрашиваться у любого пользователя и с любой машины, хотя пустят все равно только с адреса 192.168.0.4. Если же третья строчка в приведенной выше секции конфига будет выглядеть так: 

allow Administrator * * 80 * 1-5 00:00:00-20:00:00
то доступ к администрированию можно будет получить с любого компьютера при предъявлении пароля для пользователя Administrator. 

Каждого пользователя в нашем случае, по всей видимости, будет интересовать трафик, израсходованный им на текущий момент. Для того, чтобы дать пользователю такую возможность, надо всего лишь дать ему доступ на страницу WEB-администрирования, но с ограниченными правами, чтобы он мог только посмотреть текущие значения своего (и только своего!) израсходованного и максимально допустимого трафика. Для этого можно запустить службу admin для всех пользователей еще раз, но на другом порту и с ключом -s (сокращение от слова security), для чего дописываем в конфиг строчки: 

flush
auth iponly
allow *
admin -p8081 -s

Теперь каждый пользователь может открыть в браузере страницу http://192.168.0.1:8081/C и увидеть там свою статистику. А пользователь Administrator на странице http://192.168.0.1:8080/C может посмотреть статистику для всех. При этом есть определенная хитрость: если пользователь определяется по IP-адресу, как в нашем случае, то для того, чтобы он видел действительно свою статистику, необходимо, чтобы в настройках браузера (например Internet Explorer) доступ к http://192.168.0.1 происходил без прокси-сервера. Иначе вместо адреса клиента служба admin увидит адрес самого сервера, т.к. клиент обратится к ней через прокси и отработает неправильно. 

Из приведенных примеров становится ясно, что авторизация strong предполагает проверку по наиболее полному списку параметров: IP рабочей станции, имя и пароль пользователя, список разрешенных хостов, портов и т.д., в отличие от авторизации iponly, когда имя пользователя не проверяется - но звездочку вместо имени пользователя в команде allow мы все же вынуждены ставить для совместимости! 

А теперь предположим, что нам нужно по ряду причин запретить доступ на некоторые сайты, например, общеизвестный www.anekdot.ru. Для этого  используем команду nsrecord: 

nsrecord www.anekdot.ru 127.0.0.3
тем самым перенаправляем любые запросы сайта с анекдотами на локальный адрес. Можно использовать эту команду в более изощренном варианте, например, 

nsrecord www.anekdot.ru 87.250.251.11
будет вместо сайта www.anekdot.ru перенаправлять на сайт www.yandex.ru. Вместо яндекса можно было бы сделать перенаправление, к примеру, на корпоративный сайт. 
Впрочем, в версии 0.6 появилась возможность более удобно управлять списком доступа на сайты. Для этого можно использовать уже хорошо знакомую нам команду deny с использованием шаблонов, например:

deny * * www.anekdot.ru *

- безусловно запрещает доступ на сайт www.anekdot.ru

deny * * anekdot* *

-	запрещает доступ на все сайты, в названии которых встречается anekdot.

Впрочем, продвинутые пользователи могут обойти этот запрет, обращаясь к сайту по его IP или используя анонимные сайты.

У себя я использую целый список шаблонов, возможно, кому-то пригодится:

deny * * *sex*,*porn*,*adult*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banner*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.net*

Чтобы на загромождать конфиг длинными списками, можно использовать команду include и макрос $. Например, предыдущая команда могла бы выглядеть так:
deny * * $c:\3proxy\ban.txt

где файл ban.txt — это текстовый файл, содержащий список запретных ресурсов (через запятую, без пробелов)

либо так:

include c\3proxy\baninclude.txt

где файл ban_include.txt содержал бы в себе всю строку конфига с запретами.

Желающие могут найти списки бан-листов в интернете и адаптировать к формату конфига 3proxy, благо что ограничений на размер конфига  нет.  Так же как нет ограничений на файлы, включенные через include. На файлы, включенные через макрос $, существует ограничение в 64 килобайта.

Для удобства дальнейшего пользования конфиг можно разбить на логические разделы и пополнить комментариями. Я это делаю с помощь символа #. Напомню, что любая строка конфига, начинающаяся с пробела или с символа #, воспринимается сервером как комментарий. В нашем случае окончательно "вылизанный" конфиг может выглядеть так (версия 7): 

###############################################################
# ОБЩИЕ ПАРАМЕТРЫ
###############################################################

service
internal 192.168.0.1 
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
deny * * anekdot* *monitor "c:\3proxy\bin\3proxy.cfg"
monitor "c:\3proxy\IP_list.txt"
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log c:\3proxy\logs\3proxy.log D
rotate 30
archiver rar “”"c:\Program Files\WinRAR\rar.exe””" a -df -inul %A %F

###############################################################
# ЗАДАЕМ ПОЛЬЗОВАТЕЛЕЙ, ОГРАНИЧЕНИЯ СКОРОСТИ И СЧЕТЧИКИ
###############################################################

users Administrator:CL:password
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
counter "c:\3proxy\3proxy.3cf" D "C:\3proxy\traf\traf"
nocountin * 192.168.0.4 * 110 *
countin "1/Иванов" M 50 * 192.168.0.2 * * *
countin "2/Петров" M 80 * 192.168.0.3 * * *
countin "3/Сидоров" M 30 * 192.168.0.4 * * *

###############################################################
# РАЗДАЕМ WEB
###############################################################

auth iponly 
deny * * *sex*,*porn*,*adult*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banner*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.net*

allow * 192.168.0.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
proxy –a -t

###############################################################
# РАЗДАЕМ ПОЧТУ
###############################################################

flush
auth iponly
deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
allow * $"c:\3proxy\IP_list.txt" * 3110,25,110 * 1-5 00:00:00-20:00:00
tcppm -i192.168.0.1 25 smtp.provider.ru 25
tcppm -i192.168.0.1 2110 pop.mail.ru 110
tcppm -i192.168.0.1 3110 pop.yandex.ru 110

###############################################################
# РАЗДАЕМ FTP И АСЬКУ
###############################################################

flush
auth iponly
allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00
ftppr 
socks

flush
allow *
icqpr

###############################################################
# АДМИНИСТРАТИВНЫЙ ДОСТУП
###############################################################

flush
auth strong
allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
admin

flush
auth iponly
allow *
admin -p8081 -s
dnspr

end

###############################################################
# КОНЕЦ КОНФИГА
###############################################################
Согласитесь, что так конфиг намного информативнее и легче в восприятии. 

Ключ -а при запуске прокси позволяет скрыть внутренний IP пользователя, в чем легко убедиться, к примеру, зайдя на 2ip.ru

В конце поставили необязательную команду end. Все, что находится после нее, сервером не обрабатывается. Команда end - это своего рода знак глобального, до конца конфига, комментария. Бывает иногда удобно отключить большую часть конфига, просто поставив перед ней эту команду. 
Кроме того, в этом конфиге запустили кэширующий dns прокси dnspr, теперь можно на клиентских компьютерах в настройках сети назначить IP прокси сервера как DNS сервер. 
Рассмотрим теперь нередкий случай, когда нужно раздать интернет, если у провайдера прокси сервер, т.е. случай вышестоящего прокси. Кроме того, это может пригодиться в случае использования прокси через ускоритель спутника, как это было у меня. В этом случае используется связка перенаправления parent и команды allow. Рассмотрим пример, когда прокси запущен на локальном хосте 127.0.0.1, порт 3128 — типичный случай для ускорителя спутникового интернета. В этом случае простейший конфиг  будет выглядеть так:

fakeresolve 
auth iponly 
allow * 
parent 1000 http 127.0.0.1 3128
proxy -p8080

Здесь используется команда fakeresolve, используемая для разрешения имен в случае перенаправления всех запросов на вышестоящий прокси.

Необходимое послесловие
Приведенный выше конфиг довольно близок к тому, что я использую в офисе, за исключением количества пользователей и некоторых специфичных моментов. При этом надо иметь в виду, что часть функций прокси, рассмотренных в примерах, работает только в версии 0.6, уточнить по конкретным командам можно в changelog: http://3proxy.ru/current/Changelog.txt

Должен признаться, что мы не рассмотрели и трети всех возможных настроек сервера. Есть еще много разных команд, которые вам могут понадобиться -  dialer, maxconn, system, i, которые остались не рассмотренными вообще, да и разнообразие всемозможных сочетаний рассмотренных команд намного богаче. Но я и не ставил себе задачу дать более-менее полное описание конфига, ограничившись более скромной - рассмотреть на ряде примеров, построенных как матрешка - от самого маленького и простого до достаточно сложного и "правильного" - конфиг, чтобы на их основе понять основные принципы. Несмотря на кажущуюся на первый взгляд сложность логики конфига, надеюсь, в процессе чтения этого текста вы уже убедились, что в нем все довольно строго и логично. Опять же автор программы обещает к релизу сделать конфиг более читаемым и понятным. 

Важно понять, как работает обработчик конфига. Очень просто - в порядке следования команд в конфиге. Если серверу надо определить, дать ли разрешение на тот или иной запрос - он ищет первое удовлетворяющее правило из списка доступа клиентов (ACL) и действует в соответствии с ним, даже если после него есть другие правила. И еще одно - все разрешения должны быть заданы в конфиге ДО запуска соответствующей службы. 

Если есть вопросы - добро пожаловать на форум http://3proxy.ru/board.html. Впрочем, должен предупредить, что вопросы типа "а почему у меня ничего не работает?" здесь, как правило, не приветствуются и предварительное чтение хотя бы FAQ и HowTO не только приветствуется, но и является обязательным. На основании собственного опыта могу посоветовать начать с русскоязычных FAQ и HowTO, затем для сравнения прочитать англоязычные FAQ и HowTO, я в них нашел некоторые взаимодополняющие моменты. Ну и разумеется, медитация над man (увы, он только на английском) даст вам ответы почти на все вопросы по этому замечательному прокси-серверу. Могу утверждать это по собственному опыту. На оставшиеся еще вопросы можно будет найти ответы в changelog, ну а если и там вы не найдете ответа - значит, уже пора задавать вопрос на форуме. 

Дополнения от 30 марта 2010 года.

Рассмотрим некоторые вопросы, которые чаще всего возникают у пользователей 3proxy. А также некоторые интересные, но неочевидные возможности прокси-сервера.

1. Как привязать MAC-адрес сетевой карты в конфиге?
Для этого можно использовать команду system:
system arp -s 1.2.3.4 AA:BB:CC:DD:EE:FF 
эта строчка в конфиге дает отсылку к системной команде arp, которая привязывает указанный IP адрес к указанному MAC-адресу.

2. Можно ли указать в конфиге целые сетки, т.е. использовать маску 192.168.100.* вместо перечисления всех IP адресов?
Да, в конфиге можно использовать CIDR, к примеру:
allow * 192.168.100.0/32
или диапазон
allow * 192.168.100.5-192.168.100.10

3. Есть ли динамический шейпер в 3proxy, т.е. можно ли задавать приоритеты по скорости для пользователей?
На данный момент (март 2010) нет, но автор обещал прикрутить.

4. Есть ли антивирусный модуль в 3proxy?
Смотри ответ на вопрос 3.

5. Где скачать анализатор логов WRSpy:
http://www.wrspy.ru/download/WrSpySetup.rar - ссылка на инсталлятор
http://www.wrspy.ru/download/WrSpyUp166.rar - ссылка на последнее обновление.

6. Как правильно указать глобальные параметры конфига, относящиеся ко всем запускаемым службам?
Команды конфига выполняются непосредственно после получения, т.е. как только получена команда "proxy" - служба стартуется с заданной конфигурацией и только после этого считывается следующая команда. Поэтому запуск службы всегда должен быть последней командой, после него ничего не должно быть, кроме конфигурации следующей службы. Если что-то и получается указать после запуска службы - это просто совпадение, в любой момент может перестать работать.

7. Можно ли использовать несколько внешних интерфейсов для прокси?
Команда parent с нулевым портом устанавливает адрес используемого интерфейса. Например 
allow vasya 
parent 1000 http 192.168.1.1 0 
allow petya 
parent 1000 http 192.168.2.1 0 
устанавливает внешний интерфейс 192.168.1.1 для vasya и 192.168.2.1 для petya

8. Как настроить фильтрацию нежелательных ресурсов (например, для школы)?
Воспользуйтесь DNS Системы контентной фильтрации:
nserver 81.176.72.82
nserver 81.176.72.83
Все запросы обрабатываются системой и практически ни одна страница с порно не будет доступна.
Правда, система довольно жестко фильтрует контент и перекрывает довольно много сравнитеьно безопасных сайтов.

9. Можно ли использовать разделитель в почтовом клиенте, отличный от #?
Используйте команду delimchar

10. Как задать пользователю безлимитный трафик?
Используйте значение, которое он не сможет выкачать в принципе.

11. Как пользователю дать определенный трафик, который он может скачать в любое время, а не только в данный месяц или день?
Используйте Y - на год, N - никогда для параметра type: countin <number> <type> <limit> <userlist> <sourcelist> <targetlist> <targetportlist> <operationlist>

12. Почему ограничение трафика не всегда действует при скачивании файлов?
3proxy не прерывает закачку файла и лимит не является жестким. Но при начале закачки, по возможности, проверяется укладывается ли файл по размерам в норму.

13. Какой формат используется в файлах счетчиков, задаваемых командой counter ?
Номер счетчика - трафик*4GB + трафик. Просто в целый тип больше 4GB не влазит.
Например, строчка 00100 0000000021 3468801478 соответствует счетчику номер 100 со значением 21*4 + 3=89Гб.

14. Можно ли ставить в конфиге не все звездочки в ACL?
* в конце ACL можно вообще не ставить. То есть вполне рабочей будет строка вида:
allow user

15. Как администратору смотреть общий (для всех пользователей) суточный или месячный  трафик?
countin 100/month M 1000000 * 
countin 101/day D 1000000 *

16.  Как разрешить пользователям доступ к ICQ, не давая при этом доступа к любым сайтам?
allow * [список своих сетей] 64.12.0.0/16,205.188.0.0/16 3190 
deny * 
Но лучше использовать icqpr.

17. Как в 3proxy разрешить работу протокола IMAP для outlook?
Сделай tcppm для порта 143.  

18. Почему не приходит почта при таком конфиге?
 tcppm -i192.168.0.1 25 mail.infobox.ru 25 
smtpp 

Ты пытаешься на одном 25-ом порту запустить 2 разных сервиса.

19. Есть сеть 10.10.1.0/24, для нее заведен счетчик: countin "60/ХХХ" M 5000 * 10.10.1.0/24 * * *, требуется вести подсчет для двух адресов из этой сети отдельно от основного. При этом, если основная сеть уже выбрала свой трафик, у этих двух адресов доступ должен сохраняться в пределах их собственных лимитов. 

Сделать первые два счетчика для выделенных адресов, затем дать команду nocountin, чтобы их трафик не попадал в остальной.
Правила countin и nocountin обрабатываются в порядке очереди до первого правила nocountin/nocountout.

20. При авторизации strong периодически при загрузке страниц появляются окна запроса логина-пароля. Как избавиться?
- Попробуйте после всех allow поставить deny *.
- Используйте опцию -n при запуске прокси.

Дополнения от 25 мая 2015 года.

В связи с тем, что в прошлом году произошел массовый слив паролей с ящиков на mail.ru и yandex.ru, компании перешли на более безопасный почтовый протокол TLS и «традиционные» схемы работы с этими почтовыми ящиками через 3proxy перестали работать.
Описываю актуальный способ работы с ящиками на TLS (касается как ящиков непосредственно на этих площадках, так и корпоративной почты с хостингом на яндексе).

Приведу свой кусок конфига:

tcppm 1995 pop.mail.ru 995
tcppm 1465 smtp.mail.ru 465

tcppm 2995 pop.yandex.ru 995
tcppm 2465 smtp.yandex.ru 465

Соответственно в файле hosts, находящемся в папке Windows\system32\drivers\etc, надо будет внести дополнительные строчки:

192.168.200.1	pop.mail.ru
192.168.200.1	smtp.mail.ru

192.168.200.1	pop.yandex.ru
192.168.200.1	smtp.yandex.ru

где 192.168.200.1 — это IP прокси-сервера.

Проверить, что все правильно — командой 
ping pop.mail.ru
- должны получать отклик от прокси-сервера, аналогично для других почтовых серверов.

Далее в TheBat или OE делаем настройки согласно инструкции на сайтах mail.ru или яндекса за одним исключением: вместо стандартных портов 995 и 465 указываем те, что в нашем конфиге.

На примере smtp.mail.ru:

SMTP-сервер: smtp.mail.ru
Соединение: Безопасное на спец. Порт (TLS)
Порт: 1465
Пользователь: полный адрес ящика

Собственно, всё, на этом настройка ящиков закончена. 

© 2006-2015 by Kurmaeff Halit <halit_at_mail_dot_ru>