Как можно выполнять скрипт checkmail.php не по cron, а сразу после получения письма сервером nginx?
Если письмо кладется в файл, то можно следить за каталогом с письмами с помощью inotify (linux-only?).
В Дебиане и Убунте смотрите на пакеты incron, iwatch.

Вариант №2 — следить за логами nginx'a и запускать команду при ловле события:
(
date +'%Y.%m.%d %H:%M:%S -- Started...'
while : ; do
    tail -F /var/log/nginx/access.log |
    grep --line-buffered -i -- "smtp" | 
    while read line; do
        date +"%Y.%m.%d %H:%M:%S -- $line"
        php -f /path/to/checkmail.php
    done
    date +'%Y.%m.%d %H:%M:%S -- Restarted...'
    sleep 30
done
) > /var/log/checkmail.log 2>&1 &

Примерно так.
Не думаю, что nginx может быть хоть минимально полноценным SMTP сервером.
Насколько я понял, nginx только прокси-авторизатор.
С exim я делал так: 
см. habrahabr.ru/post/164661/