Я не думаю, что второй подход "чище". Напротив, для этого требуется, чтобы вы внедрили значительную часть стандартного MTA, поэтому я бы рекомендовал против этого.
Я считаю, что опрос POP / IMAP-сервера на самом деле является самым чистым способом сделать это. Почему вы решили против этого? Если сервер POP / IMAP и ваш сервис находятся в одной локальной сети (или даже на одной и той же машине), опрос будет довольно недорогим. Вы можете делать это каждые 10-20 секунд для минимальной задержки, которая не должна вызывать проблем. Хотя это может показаться немного технически неэффективным, вы будете использовать стандартный протокол взаимодействия (POP3 / IMAP), который дает вам гибкость, избегая повторной реализации почтового сервера.
Подход порождения Java-приложения также кажется жизнеспособным, но я бы предпочел опрос, потому что:
a) Используемый вами интерфейс (POP3 / IMAP) более стандартизирован, в то время как интерфейс, который вы используете для «подключения» к почтовому серверу, будет зависеть от сервера (в Unix вы можете использовать, например, procmail, но вы все равно зависит от конкретного программного обеспечения)
b) Запуск отдельного процесса по почте, вероятно, будет иметь гораздо больше накладных расходов, чем опрос.
Между прочим: Третий подход заключается в том, чтобы каким-то образом сбросить входящие письма в виде файлов во «входящий» каталог (многие почтовые серверы могут сделать это), а затем опросить каталог. Опрос каталога будет даже дешевле, чем опрос сервера. Просто остерегайтесь проблем с синхронизацией (чтение наполовину написанной почты, несколько одновременных читателей, читающих один и тот же файл почты ...)
Мой опыт:
Я реализовал системы с использованием обоих подходов (опрос IMAP и создание отдельного процесса). Опрос проводился для довольно большого Java-приложения, которое обрабатывало данные, которые люди отправляли в почтовый ящик; У меня не возникло проблем с опросом. Нерестовый подход был для небольшого сценария Perl; Я просто сделал это, поскольку это была простая программа, которая обрабатывала только несколько писем в день, и подключиться к почтовому серверу было проще, чем выполнять IMAP в Perl.