It seems clear that localhost
is always wrong, but that most SMTP servers ignore that value, so it hasn’t mattered.
The 3 places that smtp_domain
show up in https://github.com/discourse/discourse
are all > 2-7 years old. I was wondering if perhaps some library just started sending localhost for some reason?
I think that the best solution, in spite of @Falco’s concerns, would be to actually fix this somewhere like
Regardless of whether the consensus is to keep sending localhost
in spite of it being out of line with the RFCs, then fixing the rake task as described above is required. Oh, and I’m the one who wrote that code. But, wait. I see, action_mailer.smtp_settings['domain']
can be empty. So I guess
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])
should be
Net::SMTP.start(smtp[:address], smtp[:port], smtp[:domain] || 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])
for now, at least. I think that should use the domain
if one exists and use the current (but wrong?) behavior of using localhost
if discourse_smtp_host
isn’t defined.
I’m reluctant to add this to discourse-setup
, as it’s working for nearly everyone as it is and it’s one more rather confusing question to ask. (And I’m about to add a question for notification_email
, so if we’re not careful it’ll start to seem like what I remember making the Linux kernel to be like a couple decades ago.)
Maybe this is where the localhost is coming from?
https://github.com/mikel/mail/blob/master/lib/mail/network/delivery_methods/smtp.rb#L82