А можно на awk для заголовков в любое число строк:
awk -F ':' 'BEGIN{key=""} {if ($2) {key=$1}; h[key][length(h[key])+1]=$0}END{for (i in h["Subject"]) print h["Subject"][i]}' /path/to/file
Строим словарь вида «From» => [строки], «Subject» => [строки], ..., а потом выводим строки по нужному ключу.