Очередная проблема. Великий и могучий Outlook Express не видит вложения, отправленные старшим собратом – Outlook 2007. Т.е. письмо большого размера, но виден только текст этого письма. Любой другой клиент, открывающий такие письма, их видит, но любимый мой OE в этот раз сплоховал. Проблема заключается в том, что Outlook по своей прихоти отправляет вложения в формате TNEF, который не сильно понимает ОЕ. Кручение галочек и прочей мутотени не помогло, так что оставалось только бубен icon smile Postfix + ytnef filter Также частенько от клиентов снаружи приходили вложения WINMAIL.DAT, которые являются отражением той же проблемы. Когда уже надоело ручками перекодировать письма, чтобы достать вложение, внезапно, в дебрях интернета был найден некий ytnef_smtpd. И счастию не было предела icon smile Postfix + ytnef filter

http://www.viraj.org/ytnef_smtpd/
Из ридми:
This script provides a SMTP proxy that performs extraction of TNEF attachments and re-attaching them as normal ones.
По-русски говоря – он представляет из себя SMTP прокси и перекодирует вложения в нормальный формат.
Приступим icon smile Postfix + ytnef filter

Ставим собственно сам конвертер:

1
2
cd /usr/ports/converters/ytnef
make && make install

И Питон:

1
2
cd /usr/ports/lang/python
make && make install

Качаем скрипт по ссылке выше и располагаем здесь:
/usr/local/etc/mail/ytnef_smtpd.py

создаем скрипт автозапуска /usr/local/etc/rc.d/ytnef_smtpd.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh

case "$1" in
start)
        if [ -f /var/run/ytnef_smtpd.pid ]
        then
                echo "Script already launched. PID: "\
                        `cat /var/run/ytnef_smtpd.pid`
        else
                echo "Starting ytnef smtpd..."
                daemon -f -p /var/run/ytnef_smtpd.pid \
                        /usr/local/etc/mail/ytnef_smtpd.py && echo "...Done!"
        fi
        ;;
stop)
        if [ -f /var/run/ytnef_smtpd.pid ]
        then
                echo "Shutting down ytnef smtpd..."
                kill -TERM `cat /var/run/ytnef_smtpd.pid` && \
                        rm -f /var/run/ytnef_smtpd.pid && echo "...Done!"
        else
                echo "ytnef smtpd not launched."
        fi
        ;;
*)
        echo "Use start script for: { start | stop }" >&2
        exit 64
        ;;
esac

Даем права:

1
2
chmod 755 /usr/local/etc/mail/ytnef_smtpd.py
chmod 755 /usr/local/etc/rc.d/ytnef_smtpd.sh

Правим сам /usr/local/etc/mail/ytnef_smtpd.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Address to listen on
LISTEN_ADDR = 'localhost'
# Port to listen on
LISTEN_PORT = 10027
# Remote address to forward messages to
REMOTE_ADDR = 'localhost'
# Remote port to forward messages to
REMOTE_PORT = 10028
# Location of ytnef binary
YTNEF_BIN = '/usr/local/bin/ytnef'
# Location of 'file' binary. Set this to '' to disable.
FILE_BIN = '/usr/bin/file'
# Logfile for errors. Set this to '' to disable.
LOG_FILE = '/var/log/ytnef_smtpd.log'
# String returned to SMTP client when the filter fails for some reason
FILTER_FAIL = '451 tnef filter failed'

Прикручиваем фильтр к постфиксу (если больше нет других SMTP прокси):
/usr/local/etc/postfix/main.cf:

1
content_filter = scan:127.0.0.1:10027

/usr/local/etc/postfix/master.cf:

1
2
3
4
5
6
7
8
9
10
....
127.0.0.1:10028 inet n - n - 16 smtpd
 -o content_filter=
 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 -o smtpd_helo_restrictions=
 -o smtpd_client_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks_style=host
 -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Т.е. постфикс после получения кидает письмо на порт 10027 на ytnef фильтр и тот выдает его ему назад в цепкие лапы на 10028 порт.

Далее ребутаем-запускаем:

1
2
/usr/local/etc/rc.d/ytnef_smtpd.sh start
/usr/local/etc/rc.d/postfix restart

и радуемся проходящим вложениям icon smile Postfix + ytnef filter

Другие публикации по данной теме:

2 Ответов к “Postfix + ytnef filter”

  1. Спасибо за заметку, тоже столкнулся с такой проблемой, вы мне очень помогли. Переписал вашу заметку применительно к Debian Lenny: http://vladimir-stupin.blogspot.com/2011/03/tnef-postfix.html

Оставить комментарий

(обязательно)

(обязательно)

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой:

Условия перепечатки материалов

При использовании материалов сайта на других ресурсах, прошу оставлять прямую, незаскриптованную и незакрытую от поисковых роботов ссылку на оригинал статьи.
© 2011 mahn0::Записки системного администратора
M01M battery replacement . Закажите через интернет чаи Дахун Пао посылкой из Китая. .