1. Згенерувати закодовану автентифікацію
$perl -MMIME::Base64 -e 'print encode_base64("\000логін\@gmail.com\000пароль")'отримуємо щось на зразок:
$ANC70L7Qs9GW0L1AZ21haWwuY29tANC/0LDRgNC+0LvRjA==Я чомусь не захотів вводити цю команду, бо не працюю з Perl’om, та й не терплю його. Але ніякими онлайн кодувальниками не вдалося зашифрувати як слід. Заковика виходила з пустими байтами представленими тут як \000
Врешті-решт виявилося, що перл був встановлений разом з усіма необхідними залежностями і, змарнувавши з півгодини пробуючи різні варіанти, ввів цю команду і відразу отримав те, що треба.
2. Далі приклад сеансу роботи з сервером SMTP
$openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587Можна після DATA відразу писати повідомлення без всіляких там "Content-type".
...
багато буков
...
>ehlo test
>250-mx.google.com at your service, [194.000.000.000]
>
>auth plain ANC70L7Qs9GW0L1AZ21haWwuY29tANC/0LDRgNC+0LvRjA==
>235 2.7.0 Accepted
>
>mail from:<логін@gmail.com>
>250 2.1.0 OK n15sm6315669fam.12
>
>rcpt to:<логін@mail.ru>
>250 2.1.5 OK n15sm6315669fam.12
>
>data
>354 Go ahead n15sm6315669fam.12
>
>Content-type: text/plain; charset=UTF-8
>From: логін@gmail.com
>To: логін@mail.ru
>Subject: ПЕревірка 11
>Date: Sat, 8 Jan 2011 02:45:09 +0200
>
>Преревірка
>.
>250 2.0.0 OK 1294869495 n2sm419943fam.4
>
Закінчуємо писати листа і відсилаємо повідомлення ввівши крапку "." в новому рядку. Далі можна надсилати іншого.
Ось як виявляється все просто. Щоб відіслати електронного листа можна обійтися одним терміналом. Єдине, має бути встановлений openssl. Але якщо сервер SMTP не вимагає для авторизації SSL/TLS, то можна вводити пароль простим текстом.
Додавання до повідомлення аттачів теж абсолютно тривіальна задача: просто взяти за приклад джерельний код будь-якого повідомлення з аттачем. Крім того, фанатики можуть почитати RFC 821 і RFC 5321
За мотивами http://qmail.jms1.net/test-auth.shtml
До речі. Зараз спробував ввести просто telnet smtp.mail.ru 587 і теж все пройшло успішно. Але там не вимагають STARTTLS. На smtp.gmail.com так не проходить.