Способов входа три — LOGIN, PLAIN и CRAM-MD5. Последний доступен всегда, когда включена сама команда AUTH, и пароль по сети не передаёт: это ответ на вызов, а не пересылка секрета.
На каждое имя нужен свой блок <smtp-user>. Кроме пароля, вход бывает по системному логину (только Linux), через LDAP и по сертификату.
Пароли лежат в конфигурации открытым текстом. Причину руководство называет прямо: иначе не поддержать весь набор механизмов SASL. И тут же — единственную меру: права на файл конфигурации должны быть настолько строгими, насколько возможно. То есть файл конфигурации узла — это хранилище паролей, и всё, что умеет его прочитать, читает и их: страница конфигурации в веб-мониторе, файловый вход HTTP API главы 8, резервная копия.
Достоинство CRAM-MD5 этим наполовину съедено: пароль не ходит по сети, зато лежит открытым на диске.
Вторая половина механизма интереснее. Логин привязывается к именованному источнику директивой source, и настройки этого источника перекрывают то, что соединение получило бы по своему адресу. Логинам без своего источника достаётся зарезервированный {auth}.
Так права и личность назначаются на пользователя, а не на место в сети. Для узла, которым пользуются несколько отправителей, это единственный работающий способ развести их права.
Отдельный край — веб-монитор: его страница конфигурации показывает файл целиком. Кто дошёл до монитора, тот прочитал пароли, и никакого отдельного права на это не нужно.
Пароль пользователь задаёт сам в кабинете; Хаб держит его в зашифрованном поле рабочей конфигурации и пишет на узел открытым текстом — иначе MTA его не примет.
🔴 Пароль у всех логинов один. Имена разные — pmtauser и по имени каждой пары, — а секрет общий на узел. Значит разделение логинов сегодня номинальное: зная пароль одного, можно подать под любым другим и выбрать любой адрес отправки этого узла.
# логин, его источник и права в нём — три блока, работающие вместе <smtp-user shop-example-com> password s3cret-not-shared source {shop-example-com-auth} </smtp-user> <source {shop-example-com-auth}> smtp-service yes always-allow-relaying yes require-auth true default-virtual-mta shop-example-com </source>
что делают не так и чем это кончается3 ошибки▶
§ 10.1.1
§ 10.1.1
наш опыт
3 связи
grep -n '^<smtp-user\|^ *source \|^ *require-auth' /etc/pmta/virtualhost.txt ls -l /etc/pmta/config /etc/pmta/virtualhost.txt
3 статьи
◇Как узел выбирает источник и складывает его настройкиСоединение попадает под все блоки источника, чьи адреса его накрывают, и действуют они слитно — узкий перекрывает широкий; именованные блоки подключаются только по прямой ссылке.◇Лицензия на парк, а не на серверЛицензия не привязана к серверу: её ставят на столько машин, сколько разрешает предел экземпляров, а узлы раз в час отправляют вендору статистику объёма.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.