Bind to user-specified address (BindAddress6)
[mgsmtp.git] / Relay.pas
index cf3876027bef390a883e18f7771258ceced65416..e863023fde92a7f11ca9eadb8476511ddb0f1749 100644 (file)
--- a/Relay.pas
+++ b/Relay.pas
@@ -1,6 +1,6 @@
 {
    MegaBrutal's SMTP Server (MgSMTP)
-   Copyright (C) 2010-2015 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
@@ -331,7 +331,10 @@ var MXList: TStrings; i: integer;
 begin
    MXList:= GetCorrectMXRecordList(RelayServerName);
    if MXList.Count >= 1 then begin
-      TCP:= TTCPRFCConnection.Create(MXList.Strings[0], RelayServerPort);
+      TCP:= TTCPRFCConnection.Create;
+      TCP.SetBindAddress(AF_INET,  MainServerConfig.BindAddress);
+      TCP.SetBindAddress(AF_INET6, MainServerConfig.BindAddress6);
+      TCP.Connect(MXList.Strings[0], RelayServerPort);
       TCP.SetSockTimeOut(DEF_SOCK_TIMEOUT);
       i:= 1;
       while (not TCP.Connected) and (i < MXList.Count) do begin