В моем случае наиболее подошел вариант с CRON. Я добавил прверку каждые 5 минут
php /var/............/getmails2.php > /dev/null 2> /dev/null
а в скрипте проверяю почту и выполняю действия. Начало:
$ml = imap_open ("{imap.mail.ru:993/imap/ssl}", "***@mail.ru", "pass******");
У меня не критичная ко времени процедура, 5 минут мне вполне хватало.
P.S я забираю почту со стороннего сервера.