#!/bin/sh # Example attachment decoder script. The attachment comes from stdin, and # the script is expected to output UTF-8 data to stdout. (If the output isn't # UTF-8, everything except valid UTF-8 sequences are dropped from it.) # The attachment decoding is enabled by setting: # # plugin { # fts_decoder = decode2text # } # service decode2text { # executable = script /usr/local/libexec/dovecot/decode2text.sh # user = dovecot # unix_listener decode2text { # mode = 0666 # } # } libexec_dir=`dirname $0` content_type=$1 # The second parameter is the format's filename extension, which is used when # found from a filename of application/octet-stream. You can also add more # extensions by giving more parameters. formats='application/pdf pdf application/x-pdf pdf application/msword doc application/mspowerpoint ppt application/vnd.ms-powerpoint ppt application/ms-excel xls application/x-msexcel xls application/vnd.ms-excel xls application/vnd.openxmlformats-officedocument.wordprocessingml.document docx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx application/vnd.openxmlformats-officedocument.presentationml.presentation pptx application/vnd.oasis.opendocument.text odt application/vnd.oasis.opendocument.spreadsheet ods application/vnd.oasis.opendocument.presentation odp ' if [ "$content_type" = "" ]; then echo "$formats" exit 0 fi fmt=`echo "$formats" | grep -w "^$content_type" | cut -d ' ' -f 2` if [ "$fmt" = "" ]; then echo "Content-Type: $content_type not supported" >&2 exit 1 fi # most decoders can't handle stdin directly, so write the attachment # to a temp file path=`mktemp` trap "rm -f $path" 0 1 2 3 14 15 cat > $path xmlunzip() { name=$1 tempdir=`mktemp -d` if [ "$tempdir" = "" ]; then exit 1 fi trap "rm -rf $path $tempdir" 0 1 2 3 14 15 cd $tempdir || exit 1 unzip -q "$path" 2>/dev/null || exit 0 find . -name "$name" -print0 | xargs -0 cat | $libexec_dir/xml2text } wait_timeout() { childpid=$! trap "kill -9 $childpid; rm -f $path" 1 2 3 14 15 wait $childpid } LANG=en_US.UTF-8 export LANG if [ $fmt = "pdf" ]; then /usr/bin/pdftotext $path - 2>/dev/null& wait_timeout 2>/dev/null elif [ $fmt = "doc" ]; then (/usr/bin/catdoc $path; true) 2>/dev/null& wait_timeout 2>/dev/null elif [ $fmt = "ppt" ]; then (/usr/bin/catppt $path; true) 2>/dev/null& wait_timeout 2>/dev/null elif [ $fmt = "xls" ]; then (/usr/bin/xls2csv $path; true) 2>/dev/null& wait_timeout 2>/dev/null elif [ $fmt = "odt" -o $fmt = "ods" -o $fmt = "odp" ]; then xmlunzip "content.xml" elif [ $fmt = "docx" ]; then xmlunzip "document.xml" elif [ $fmt = "xlsx" ]; then xmlunzip "sharedStrings.xml" elif [ $fmt = "pptx" ]; then xmlunzip "slide*.xml" else echo "Buggy decoder script: $fmt not handled" >&2 exit 1 fi exit 0
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
aggregator | File | 67.29 KB | 0755 |
|
anvil | File | 71.7 KB | 0755 |
|
auth | File | 1.98 MB | 0755 |
|
checkpassword-reply | File | 20.08 KB | 0755 |
|
config | File | 482.16 KB | 0755 |
|
decode2text.sh | File | 2.77 KB | 0755 |
|
deliver | File | 104.45 KB | 0755 |
|
dict | File | 409.95 KB | 0755 |
|
director | File | 576.32 KB | 0755 |
|
dns-client | File | 43.19 KB | 0755 |
|
doveadm-server | File | 2.82 MB | 0755 |
|
dovecot-lda | File | 104.45 KB | 0755 |
|
gdbhelper | File | 18.9 KB | 0755 |
|
health-check.sh | File | 943 B | 0755 |
|
imap | File | 1.66 MB | 0755 |
|
imap-hibernate | File | 132.3 KB | 0755 |
|
imap-login | File | 161.62 KB | 0755 |
|
imap-urlauth | File | 78.8 KB | 0755 |
|
imap-urlauth-login | File | 47.05 KB | 0755 |
|
imap-urlauth-worker | File | 210.52 KB | 0755 |
|
indexer | File | 97.86 KB | 0755 |
|
indexer-worker | File | 109.48 KB | 0755 |
|
ipc | File | 74.86 KB | 0755 |
|
lmtp | File | 315.25 KB | 0755 |
|
log | File | 89.45 KB | 0755 |
|
maildirlock | File | 23.15 KB | 0755 |
|
mkcert.sh | File | 879 B | 0755 |
|
old-stats | File | 191.44 KB | 0755 |
|
pop3 | File | 203.55 KB | 0755 |
|
pop3-login | File | 116.42 KB | 0755 |
|
quota-status | File | 728.75 KB | 0755 |
|
rawlog | File | 48.01 KB | 0755 |
|
replicator | File | 153.09 KB | 0755 |
|
script | File | 44.67 KB | 0755 |
|
script-login | File | 37.48 KB | 0755 |
|
stats | File | 310.02 KB | 0755 |
|
submission | File | 117.75 KB | 0755 |
|
submission-login | File | 40.44 KB | 0755 |
|
xml2text | File | 24.09 KB | 0755 |
|