diff --git a/reaction-mailcreate/createMails.py b/reaction-mailcreate/createMails.py
index f1348fe32a6c248b4944baeabf606d2b88dd12bd..0ddfe6c4d08a792f048e496dc5769231ba76fed7 100755
--- a/reaction-mailcreate/createMails.py
+++ b/reaction-mailcreate/createMails.py
@@ -63,6 +63,7 @@ parser.add_argument('-o', '--output',        dest='output',      default='{based
 parser.add_argument('-R', '--reply-to',      dest='replyto',     default=None, help='reply-to mail address (default: None)')
 parser.add_argument(      '--salt',          dest='salt',        default=None, help='salt to use for hashing (default: random 8-byte hex string)')
 parser.add_argument(      '--sign',          dest='sign',        default='', type=str.lower, choices=['', 'gpg', 'gpgsm'], help='signature method (default: ""); one of "", "gpg"')
+parser.add_argument(      '--signpass',      dest='signpass',    default=None, help='Password for the signature key (default: none); will be queried interactively if set to "-"')
 parser.add_argument(      '--sign-arg',      dest='signarg',     default={}, nargs=1, action='keyvalue', help='additional arguments to be passed to the signature call (default: None)')
 parser.add_argument(      '--sign-init-arg', dest='signinitarg', default={}, nargs=1, action='keyvalue', help='additional arguments to be passed to the signature-mechanism init call (default: None)')
 parser.add_argument('-s', '--subject',       dest='subject',     default='Security Challenge for {site} -- {campaign}{infix}', help='mail subject (default: "Security Challenge Message -- {campaign}{infix}")')
@@ -95,7 +96,7 @@ if (args.sender == 'Nobody <nobody@example.com>') or \
 if not args.dryrun:
     import smtplib
     # Import dependencies for HTTTP interaction if necessary
-    if not args.webserver:
+    if args.webserver:
         import requests
 
 # Import dependencies for attachment file-magic if necessary
@@ -137,6 +138,11 @@ if args.smtppass and not args.smtpuser:
 if args.smtppass == '-':
     args.smtppass = getpass.getpass('SMTP authentication password: ')
 
+if args.signpass == '-':
+    args.signpass = getpass.getpass('Signature key password: ')
+if args.signpass:
+    args.signarg['passphrase']: args.signpass
+
 if args.sign and 'keyid' not in args.signarg:
     args.signarg['keyid'] = args.sender
 
@@ -173,6 +179,8 @@ if args.verbose:
         print(f'Using "{args.sign}" as signature method.')
         if args.signarg:
             print(f'Using "{str(args.signarg)}" as signing argument(s).')
+        if args.signpass:
+            print('Using "{args.signpass}" as password for signature key.')
     else:
         print(f'Using no signature method.')
     print(f'Using "{args.subject.format_map(SafeDict(basedir=args.basedir, campaign=args.campaign, infix=args.infix, webserver=args.webserver, salt=args.salt))}" as mail subject.')