X-Git-Url: http://git.megabrutal.com/?p=mgsmtp.git;a=blobdiff_plain;f=MgSMTP.pas;h=19dc9685e13a0960decb1bff1401374d051f8885;hp=e0ee6364e9f71b1306f8205790ca5370c011e9b3;hb=88356fe144204e39fe5bc4368e838d13ac2cfd13;hpb=8bbdde2a7e0570cd88325548dbfed038e327f08b
diff --git a/MgSMTP.pas b/MgSMTP.pas
index e0ee636..19dc968 100644
--- a/MgSMTP.pas
+++ b/MgSMTP.pas
@@ -1,6 +1,6 @@
{
MegaBrutal's SMTP Server (MgSMTP)
- Copyright (C) 2010-2014 MegaBrutal
+ Copyright (C) 2010-2018 MegaBrutal
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
@@ -49,7 +49,7 @@ const
document what bugfix/feature are you testing with the actual build.
This will be logged to help you differentiate outputs of subsequent
builds in your logs. If left empty, it won't be added to the logs. }
- DEVCOMMENT = '';
+ DEVCOMMENT = 'BindAddress';
var
@@ -130,6 +130,16 @@ begin
end;
end;
+function ConsoleCtrlHandler(Signal: dword): longbool; stdcall;
+{ Handle CTRL-C event in user mode. }
+begin
+ if Signal = CTRL_C_EVENT then begin
+ Out.writeln('Caught CTRL-C signal.');
+ Stopping:= true;
+ end;
+ Result:= true;
+end;
+
procedure Service(Argc: dword; Argv: pointer); stdcall;
var ProposedExitCode: integer;
begin
@@ -169,13 +179,18 @@ begin
SpoolManager:= TSpoolManager.Create(Config);
PolicyManager:= TPolicyManager.Create(Config);
+ AddDevComment(Logger);
+
+ if (Config.ReadString('Server', 'ListenAddress', '') = '')
+ and (Config.ReadString('Server', 'ListenPort', '') <> '') then
+ Logger.AddStdLine('WARNING! Server\ListenPort is deprecated. Use ListenAddress instead!');
+
if Config.ReadBool('Spool', 'KeepProcessedEnvelopes', false)
or Config.ReadBool('Spool', 'KeepProcessedEMails', false) then
if not DirectoryExists('processed') then CreateDir('processed');
Config.Free;
- AddDevComment(Logger);
Logger.AddStdLine('Primary server name: ' + MainServerConfig.Name);
Logger.AddStdLine('FCrDNS policy: ' + FCrDNSPolicyToStr(PolicyManager.FCrDNSPolicy));
if MailboxManager.DomainSpecific then
@@ -221,7 +236,7 @@ begin
end
else begin
Config.Free;
- Out.writeln('Error: Server/Name is a mandatory configuration entry.'#13#10
+ Out.writeln('Error: Server\Name is a mandatory configuration entry.'#13#10
+ 'Please configure the application properly, refer to the manual.');
ReportSvcStatus(SERVICE_STOPPED, 2, 0);
end;
@@ -236,7 +251,7 @@ end;
begin
Out.writeln('MegaBrutal''s SMTP Server, version ' + VERSION_STR + ', ' + IntToStr(PLATFORM_BITS) + ' bits');
- Out.writeln('Copyright (C) 2010-2014 MegaBrutal');
+ Out.writeln('Copyright (C) 2010-2018 MegaBrutal');
AddDevComment(Out);
Out.writeln;
@@ -302,13 +317,14 @@ begin
else begin
if Cmdline.IsPresent('USERMODE') then begin
Out.writeln('Starting MgSMTP in user mode...');
+ SetConsoleCtrlHandler(ConsoleCtrlHandler, true);
Service(0, nil);
end
else begin
Out.writeln('Trying to contact Service Control Manager...');
Out.writeln('(If you see this message on console, you tried to');
Out.writeln('start up the program incorrectly. Your current');
- Out.writeln('attempt will fail, or it may hang under Wine.');
+ Out.writeln('attempt will fail, or it may hang under Wine.)');
Out.writeln;
ServiceMode:= true;
if not StartServiceCtrlDispatcher(ServiceTable) then begin