Вопрос в том, откуда куда должен идти трафик? Из локальной сети на mail.shf.com.ua? или из интернета локально на шлюз?
Фильтрация в таблице nat не рекомендуется:
$ip -t nat -A POSTROUTING -d mail.shf.com.ua -o $EXTERNAL_IF -p tcp -m multiport --dports 80,443,465,993,995 -j MASQUERADE
Рекомендую заменить на:
-t nat -A POSTROUTING -j MASQUERADE
-P FORWARD DROP
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i $LOCAL_IF -o $EXTERNAL_IF -s $LOCAL_NET -d mail.shf.com.ua -p tcp -m multiport --dports 80,443,465,993,995 -m comment --comment "РАЗРЕШЕНО ИСХ Почтовые протоколы + http/s" -j ACCEPT
Если трафик идет на шлюз, а не транзитный, то смотрите процесс на порту:
netstat -antp |grep 465
У Вас в правилах бардак. Надо бы сначала из причесать, а уже потом разбираться. Скорей всего из-за этого что-то и не работает. А бардак просто от незнания.
Почему используете MASQUERADE, а не SNAT? Внешний адрес динамический?
Проблема таких скриптов, в том, что не ясно какой набор правил будет в итоге. А если работа скрипта прервется на полпути? Где очистка цепочек перед загрузкой новых правил? Политики по умолчанию? Используйте iptables-save, iptables-restore. Либо генерируйте сценарием файл с правилами, а грузите есть через iptables-restore.
Нужно хотя бы iptables -L --line-numbers показать, чтобы фактическое состояние смотреть, а не то, что в скрипте прописано.
Хотите разобраться? Сохраните все правила и очистите все цепочки и начинайте настройку именно с открытия нужных портов и маскарадинга трафика. Потом усложняйте правила.
В блоке #cam уж используйте multiport, они же есть в других правилах ниже.
80 порт Вы редиректите на прокси, а 443/https маскарадите. Будьте последовательны в своих намерениях. Либо пользуйте прокси на все порты, либо используйте НАТ/маскардинг для всего трафика.