Skip to content

Commit

Permalink
kde-apps/ksmtp: Send correct hostname
Browse files Browse the repository at this point in the history
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=387926
Package-Manager: Portage-2.3.19, Repoman-2.3.6
  • Loading branch information
a17r committed Dec 25, 2017
1 parent b1c85bd commit c634bf2
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
65 changes: 65 additions & 0 deletions kde-apps/ksmtp/files/ksmtp-17.12.0-correct-hostname.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
From 5199ed07428a03f1aa340da3ae99fcfa62ba2751 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <[email protected]>
Date: Fri, 22 Dec 2017 22:32:49 +0100
Subject: Send the correct hostname with the HELO/EHLO command

Summary:
It sent the server's hostname previously, which some reject.

BUG: 387926

Test Plan: Ran nc as smtp server, uses the right hostname for EHLO now.

Reviewers: mlaurent, dvratil

Subscribers: #kde_pim

Tags: #kde_pim

Differential Revision: https://phabricator.kde.org/D9485
---
src/session.cpp | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/session.cpp b/src/session.cpp
index 4320adc..0be26a9 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -27,6 +27,7 @@
#include "ksmtp_debug.h"

#include <QHostAddress>
+#include <QHostInfo>
#include <QUrl>
#include <QEventLoop>
#include <QPointer>
@@ -82,6 +83,18 @@ void SessionPrivate::setAuthenticationMethods(const QList<QByteArray> &authMetho

void SessionPrivate::startHandshake()
{
+ QString hostname = m_customHostname;
+
+ if (hostname.isEmpty()) {
+ // FIXME: QHostInfo::fromName can get a FQDN, but does a DNS lookup
+ hostname = QHostInfo::localHostName();
+ if (hostname.isEmpty()) {
+ hostname = QStringLiteral("localhost.invalid");
+ } else if (!hostname.contains(QLatin1Char('.'))) {
+ hostname += QStringLiteral(".localnet");
+ }
+ }
+
QByteArray cmd;
if (!m_ehloRejected) {
cmd = "EHLO ";
@@ -89,7 +102,6 @@ void SessionPrivate::startHandshake()
cmd = "HELO ";
}
setState(Session::Handshake);
- const auto hostname = m_customHostname.isEmpty() ? m_thread->hostName() : m_customHostname;
sendData(cmd + QUrl::toAce(hostname));
}

--
cgit v0.11.2

27 changes: 27 additions & 0 deletions kde-apps/ksmtp/ksmtp-17.12.0-r2.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

KDE_TEST="true"
inherit kde5

DESCRIPTION="Job-based library to send email through an SMTP server"
LICENSE="LGPL-2.1+"
KEYWORDS="~amd64 ~x86"
IUSE=""

DEPEND="
$(add_frameworks_dep kcoreaddons)
$(add_frameworks_dep ki18n)
$(add_frameworks_dep kio)
$(add_kdeapps_dep kmime)
$(add_qt_dep qtnetwork)
dev-libs/cyrus-sasl
"
RDEPEND="${DEPEND}"

PATCHES=(
"${FILESDIR}/${P}-ehlo-auth-fix.patch"
"${FILESDIR}/${P}-correct-hostname.patch"
)

0 comments on commit c634bf2

Please sign in to comment.