.NET Core MailKit SMTP AUTH LOGIN как локальная учетная запись Linux - PullRequest
0 голосов
/ 27 октября 2018

Я использую библиотеку MailKit для отправки почты из приложения ASP.NET Core. Я также попытался избежать библиотеки MailKit и использовать TcpClient напрямую для отправки команд на SMTP-сервер (чтобы убедиться, что библиотека не является проблемой). SMTP-сервер Postfix расположен на сервере Linux Ubuntu 18.04, где также размещается веб-приложение.

Когда я тестирую приложение локально (на компьютере с Windows), MailKit успешно аутентифицируется, и электронная почта отправляется. Однако, когда я запускаю приложение в Linux, аутентификация в Ubuntu не выполняется (тот же сервер, порт, имя пользователя и пароль). Когда я проверяю журнал связи с сервером, проблема очевидна - когда приложение запускается на сервере Linux, приложение отправляет пользователя с правами root на SMTP-сервер. Я не указал это как имя пользователя для отправки.

Существует ли какое-либо автоматическое правило для Postfix для аутентификации пользователей? Нужна ли какая-либо дополнительная конфигурация Postfix?

(я изменил оригинальные имена пользователей и пароли).

Windows Server ...

C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: dGVzdEB0ZXN0LmNvbQ==
S: 334 UGFzc3dvcmQ6
C: dGVzdHBhc3N3b3JkCg==
S: 235 2.7.0 Authentication successful

Linux Ubuntu Server ...

C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: cm9vdA==
S: 334 UGFzc3dvcmQ6
C: dGVzdHBhc3N3b3JkCg==
S: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

1 Ответ

0 голосов
/ 27 октября 2018

Вы должны каким-то образом передавать неправильную строку имени пользователя в MailKit, поскольку MailKit использует только ту строку, которую вы ей даете, в качестве строки имени пользователя. У него нет логики пытаться получить системное имя пользователя или что-то в этом роде.

Вы используете CredentialCache.DefaultCredentials? e.g.:

client.Authenticate (CredentialCache.DefaultCredentials);

Если так, то это проблема (и не имеет никакого отношения к MailKit).

...