Следующие действия должны быть предприняты для добавления нового роутера, транспорта, аутентификатора или типа поиска к exim`y:
1. Выберите название для драйвера или типа поиска, которое не конфиликтует с любыми существующими именами; в дальнейшем, я буду использовать “newdriver”.
2. Добавьте в “src/EDITME” строку:
<type>_NEWDRIVER=yes
где “<type>” - ROUTER, TRANSPORT, AUTH, или LOOKUP. Если, по умолчанию, код не должен быть включен в бинарник, закомментируте эту строку. Также вы должны добавить любые уместные комментарии о драйвере или типе поиска.
3. Добавьте в “src/config.h.defaults” строку:
#define <type>_NEWDRIVER
4. Отредактируйте “src/drtables.c”, добавьте условный код к частному заголовку и созайте запись в таблице как сделано для всех других драйверов и типов поиска.
5. Отредактируйте “Makefile” в соответствующей субдиректории (“src/routers”, “src/transports”, “src/auths” или “src/lookups”); добавьте строку для новго драйвера или типа поиска, и добавьте его к определению OBJ.
6. Создайте “newdriver.h” и “newdriver.c” в соответствующей субдиректории “src”.
7. Отредактируйте “scripts/MakeLinks” и добавьте команды для связи файлов “.h” и “.c”, как для других драйверов и поисков.
Затем, всё что вам нужно сделать - написать код! Хороший способ начать, состоит в том, чтобы сделать проформу путём копирования существующего модуля того же типа, глобально изменяя все встречи с именем, и вырезая большинство кода. Отметтьте, что любые создаваемые вами опции должны быть перечислены в алфавитном порядке, поскольку поиск по таблицам производится с использованием бинарной процедуры chop.
Ожидается, что в каждой из субдиректорий “src” присутствует файл “README”.