Добавление extern
превращает определение переменной в объявление переменной . См. этот поток относительно того, в чем разница между объявлением и определением.
Я использовал эту библиотеку в нескольких проектах, и она хорошо справляется с обработкой отскоков. Ни один обработчик, подобный этому, не может быть интерпретирован так, чтобы 100% правильная пересылка электронной почты была правильной, поскольку некоторые MTA не следуют стандартам RFC, а также существуют и другие библиотеки.