In english Хотелка Об авторе

mini_sendmail и ад Pure C

Давненько я не брал в руки шашек!

На одном из наших серверов с довиртуализационных времён веб-сервер до сих пор работает в chroot, а почтовый – «снаружи», и для отправки почты используется mini_sendmail. Это такая хорошая маленькая заглушка вместо sendmail, которая читает сообщения из stdin и скармливает их почтовому серверу уже через localhost:smtp.

Много лет всё было хорошо, пока не понадобилось из скрипта отправить почту не просто на <user@example.org>, а на «Василий Пупкин <user@example.com>». Из эстетических соображений. Но почтовый сервер при этом отвечал 501 5.1.3 Bad recipient address syntax. Оказалось, что mini_sendmail так и пытался отправить почту на указанные адреса вместе с именем, говоря серверу:

RCPT TO:test <test@test.local>

С предсказуемым результатом.

Помянув шёпотом нескольких родственников и всякие части тела, я взялся за вим, нашёл баг и попытался извлечь из памяти знания о работе со строками на чистом C. Было больно, но патч всё же родился и работает вполне успешно.

Top

Категория: работа Слова: C, mimi_sendmail, programming, patch

Комментарии Отключены