Verify the from email address is set to a valid value

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
pull/302/head
Morris Jobke 7 years ago
parent e853442468
commit 35fe66e615
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A

@ -149,8 +149,21 @@ def load(default, user=None):
logger.info("Your `session-key` has been stored in the "
"database itself, this option is now unused")
if not parseaddr(parser.get("smtp", "from"))[0]:
parser.set("smtp", "from",
formataddr(("Ich schrei sonst!", parser.get("smtp", "from"))))
from_address = parser.get("smtp", "from").strip()
if from_address != '' and parseaddr(from_address) == (None, None):
if '@' not in from_address:
logger.warn("Your `from` address doesn't contain an @ sign. "
"It is reset to an empty address.")
parser.set("smtp", "from", "")
elif ' ' in from_address:
logger.warn("Your `from` address contains a space. "
"It is reset to an empty address.")
parser.set("smtp", "from", "")
else:
parser.set("smtp", "from",
formataddr(("Ich schrei sonst!", from_address)))
return parser

@ -30,3 +30,24 @@ class TestConfig(unittest.TestCase):
self.assertEqual(parser.getlist("foo", "spam"), ['a', 'b', 'cdef'])
self.assertEqual(list(parser.getiter("foo", "bla")), ['spam', 'ham'])
self.assertEqual(list(parser.getiter("foo", "asd")), ['fgh'])
def test_smtp(self):
cases = [
('"abc" <def@example.org>', '"abc" <def@example.org>'),
('abc <def@example.org>', 'abc <def@example.org>'),
('"abc def" <def@example.org>', '"abc def" <def@example.org>'),
('abc def <def@example.org>', 'abc def <def@example.org>'),
('def@example.org', 'Ich schrei sonst! <def@example.org>'),
('"abc" def@example.org', ''),
('"abc"', ''),
('abc', ''),
]
for (config_value, expected) in cases:
parser = config.IssoParser(allow_no_value=True)
parser.read_file(io.StringIO(u"""
[smtp]
from = """ + config_value))
self.assertEqual(parser.get("smtp", "from"), expected)

Loading…
Cancel
Save