diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp index 9c7ff2b8620bfe7f50f258092e39dc718edd5346..3e3e286c0a703f820dc7c69e310af2148af6eec3 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp @@ -39,6 +39,7 @@ #include "MainFormUnit.h" #include "MailCfgDlgUnit.h" +#include "TextFileEditUnit.h" #include <stdio.h> // sprintf() #include <mmsystem.h> // sndPlaySound() //--------------------------------------------------------------------- @@ -87,6 +88,8 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) } MaxClientsEdit->Text=AnsiString(MainForm->mail_startup.max_clients); MaxInactivityEdit->Text=AnsiString(MainForm->mail_startup.max_inactivity); + MaxRecipientsEdit->Text=AnsiString(MainForm->mail_startup.max_recipients); + LinesPerYieldEdit->Text=AnsiString(MainForm->mail_startup.lines_per_yield); AutoStartCheckBox->Checked=MainForm->MailAutoStart; LogFileCheckBox->Checked=MainForm->MailLogFile; @@ -105,8 +108,8 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) =AnsiString(MainForm->mail_startup.max_delivery_attempts); RescanFreqEdit->Text=AnsiString(MainForm->mail_startup.rescan_frequency); DefaultUserEdit->Text=AnsiString(MainForm->mail_startup.default_user); - BLMailFlagEdit->Text=AnsiString(MainForm->mail_startup.dnsbl_flag); - BLMailFlagEdit->Enabled=false; + BLSubjectEdit->Text=AnsiString(MainForm->mail_startup.dnsbl_tag); + BLHeaderEdit->Text=AnsiString(MainForm->mail_startup.dnsbl_hdr); DebugTXCheckBox->Checked=MainForm->mail_startup.options &MAIL_OPT_DEBUG_TX; @@ -123,18 +126,20 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) AllowRelayCheckBox->Checked=MainForm->mail_startup.options &MAIL_OPT_ALLOW_RELAY; if(MainForm->mail_startup.options&MAIL_OPT_DNSBL_REFUSE) - BLMailRefuseRadioButton->Checked=true; + BLRefuseRadioButton->Checked=true; + else if(MainForm->mail_startup.options&MAIL_OPT_DNSBL_BADUSER) + BLBadUserRadioButton->Checked=true; else if(MainForm->mail_startup.options&MAIL_OPT_DNSBL_IGNORE) - BLMailIgnoreRadioButton->Checked=true; - else { - BLMailFlagRadioButton->Checked=true; - BLMailFlagEdit->Enabled=true; - } + BLIgnoreRadioButton->Checked=true; + else + BLTagRadioButton->Checked=true; + TcpDnsCheckBox->Checked=MainForm->mail_startup.options &MAIL_OPT_USE_TCP_DNS; SendMailCheckBox->Checked= !(MainForm->mail_startup.options&MAIL_OPT_NO_SENDMAIL); + DNSBLRadioButtonClick(Sender); DNSRadioButtonClick(Sender); POP3EnabledCheckBoxClick(Sender); SendMailCheckBoxClick(Sender); @@ -170,9 +175,11 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) MainForm->mail_startup.relay_port=RelayPortEdit->Text.ToIntDef(25); MainForm->mail_startup.max_clients=MaxClientsEdit->Text.ToIntDef(10); MainForm->mail_startup.max_inactivity=MaxInactivityEdit->Text.ToIntDef(120); + MainForm->mail_startup.max_recipients=MaxRecipientsEdit->Text.ToIntDef(100); MainForm->mail_startup.max_delivery_attempts =DeliveryAttemptsEdit->Text.ToIntDef(10); MainForm->mail_startup.rescan_frequency=RescanFreqEdit->Text.ToIntDef(300); + MainForm->mail_startup.lines_per_yield=LinesPerYieldEdit->Text.ToIntDef(100); SAFECOPY(MainForm->mail_startup.default_user ,DefaultUserEdit->Text.c_str()); @@ -186,8 +193,10 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) ,OutboundSoundEdit->Text.c_str()); SAFECOPY(MainForm->mail_startup.pop3_sound ,POP3SoundEdit->Text.c_str()); - SAFECOPY(MainForm->mail_startup.dnsbl_flag - ,BLMailFlagEdit->Text.c_str()); + SAFECOPY(MainForm->mail_startup.dnsbl_tag + ,BLSubjectEdit->Text.c_str()); + SAFECOPY(MainForm->mail_startup.dnsbl_hdr + ,BLHeaderEdit->Text.c_str()); if(RelayRadioButton->Checked==true) MainForm->mail_startup.options|=MAIL_OPT_RELAY_TX; @@ -218,11 +227,13 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) else MainForm->mail_startup.options&=~MAIL_OPT_ALLOW_RELAY; MainForm->mail_startup.options&= - ~(MAIL_OPT_DNSBL_IGNORE|MAIL_OPT_DNSBL_REFUSE); - if(BLMailIgnoreRadioButton->Checked==true) + ~(MAIL_OPT_DNSBL_IGNORE|MAIL_OPT_DNSBL_REFUSE|MAIL_OPT_DNSBL_BADUSER); + if(BLIgnoreRadioButton->Checked==true) MainForm->mail_startup.options|=MAIL_OPT_DNSBL_IGNORE; - else if(BLMailRefuseRadioButton->Checked==true) + else if(BLRefuseRadioButton->Checked==true) MainForm->mail_startup.options|=MAIL_OPT_DNSBL_REFUSE; + else if(BLBadUserRadioButton->Checked==true) + MainForm->mail_startup.options|=MAIL_OPT_DNSBL_BADUSER; if(HostnameCheckBox->Checked==false) MainForm->mail_startup.options|=MAIL_OPT_NO_HOST_LOOKUP; else @@ -301,9 +312,39 @@ void __fastcall TMailCfgDlg::SendMailCheckBoxClick(TObject *Sender) //--------------------------------------------------------------------------- -void __fastcall TMailCfgDlg::BLMailFlagRadioButtonClick(TObject *Sender) +void __fastcall TMailCfgDlg::DNSBLRadioButtonClick(TObject *Sender) +{ + BLSubjectEdit->Enabled=BLTagRadioButton->Checked; + BLHeaderEdit->Enabled=BLTagRadioButton->Checked; + BLSubjectLabel->Enabled=BLTagRadioButton->Checked; + BLHeaderLabel->Enabled=BLTagRadioButton->Checked; +} +//--------------------------------------------------------------------------- + +void __fastcall TMailCfgDlg::DNSBLServersButtonClick(TObject *Sender) +{ + char filename[MAX_PATH+1]; + + sprintf(filename,"%sdns_blacklist.cfg",MainForm->cfg.ctrl_dir); + Application->CreateForm(__classid(TTextFileEditForm), &TextFileEditForm); + TextFileEditForm->Filename=AnsiString(filename); + TextFileEditForm->Caption="Services Configuration"; + TextFileEditForm->ShowModal(); + delete TextFileEditForm; +} +//--------------------------------------------------------------------------- + + +void __fastcall TMailCfgDlg::DNSBLExemptionsButtonClick(TObject *Sender) { - BLMailFlagEdit->Enabled=BLMailFlagRadioButton->Checked; + char filename[MAX_PATH+1]; + + sprintf(filename,"%sdnsbl_exempt.cfg",MainForm->cfg.ctrl_dir); + Application->CreateForm(__classid(TTextFileEditForm), &TextFileEditForm); + TextFileEditForm->Filename=AnsiString(filename); + TextFileEditForm->Caption="Services Configuration"; + TextFileEditForm->ShowModal(); + delete TextFileEditForm; } //--------------------------------------------------------------------------- diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm index 8403966a51b4154fb1d25bf4dbbf7ed3bc071b4e..c88269aff158a585b09f2db2b689c6fea7d0a665 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm @@ -1,6 +1,6 @@ object MailCfgDlg: TMailCfgDlg - Left = 635 - Top = 312 + Left = 619 + Top = 465 BorderStyle = bsDialog Caption = 'Mail Server Configuration' ClientHeight = 303 @@ -53,8 +53,8 @@ object MailCfgDlg: TMailCfgDlg Top = 4 Width = 342 Height = 245 - ActivePage = SMTPTabSheet - TabIndex = 1 + ActivePage = DNSBLTabSheet + TabIndex = 5 TabOrder = 3 object GeneralTabSheet: TTabSheet Caption = 'General' @@ -84,6 +84,14 @@ object MailCfgDlg: TMailCfgDlg AutoSize = False Caption = 'Max Inactivity' end + object LinesPerYieldLabel: TLabel + Left = 9 + Top = 140 + Width = 104 + Height = 24 + AutoSize = False + Caption = 'Lines Per Yield' + end object AutoStartCheckBox: TCheckBox Left = 9 Top = 12 @@ -144,51 +152,63 @@ object MailCfgDlg: TMailCfgDlg Left = 185 Top = 76 Width = 146 - Height = 26 + Height = 24 Hint = 'Log all transmitted mail commands and responses (for debugging)' Caption = 'Log TX' ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 6 end object LogFileCheckBox: TCheckBox Left = 185 Top = 108 Width = 146 - Height = 26 + Height = 24 Hint = 'Save log entries to a file (in your DATA directory)' Caption = 'Log to Disk' ParentShowHint = False ShowHint = True - TabOrder = 6 + TabOrder = 7 + end + object LinesPerYieldEdit: TEdit + Left = 113 + Top = 140 + Width = 48 + Height = 24 + Hint = + 'Number of lines of message text sent/received between time-slice' + + ' yields' + ParentShowHint = False + ShowHint = True + TabOrder = 5 end end object SMTPTabSheet: TTabSheet Caption = 'SMTP' ImageIndex = 1 - object BlacklistedMailLabel: TLabel + object TelnetPortLabel: TLabel Left = 9 - Top = 76 + Top = 12 Width = 104 Height = 24 AutoSize = False - Caption = 'Blacklisted Mail' + Caption = 'Listening Port' end - object TelnetPortLabel: TLabel + object DefaultUserLabel: TLabel Left = 9 - Top = 12 + Top = 76 Width = 104 Height = 24 AutoSize = False - Caption = 'Listening Port' + Caption = 'Default User' end - object DefaultUserLabel: TLabel + object MaxRecipientsLabel: TLabel Left = 9 Top = 44 Width = 104 Height = 24 AutoSize = False - Caption = 'Default User' + Caption = 'Max Recipients' end object SMTPPortEdit: TEdit Left = 113 @@ -202,7 +222,7 @@ object MailCfgDlg: TMailCfgDlg end object UserNumberCheckBox: TCheckBox Left = 9 - Top = 130 + Top = 108 Width = 288 Height = 24 Hint = @@ -211,22 +231,22 @@ object MailCfgDlg: TMailCfgDlg Caption = 'Allow Mail Addressed by User Number' ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 4 end object DebugHeadersCheckBox: TCheckBox Left = 185 Top = 12 Width = 146 - Height = 26 + Height = 24 Hint = 'Log all received mail headers (for debugging)' Caption = 'Log Headers' ParentShowHint = False ShowHint = True - TabOrder = 3 + TabOrder = 1 end object DefaultUserEdit: TEdit Left = 113 - Top = 44 + Top = 76 Width = 185 Height = 24 Hint = @@ -234,64 +254,28 @@ object MailCfgDlg: TMailCfgDlg 'ysop")' ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 3 end object AllowRelayCheckBox: TCheckBox Left = 9 - Top = 162 + Top = 140 Width = 288 Height = 24 Hint = 'Allow mail to be relayed for authenticated users' Caption = 'Allow Authenticated Users to Relay Mail' ParentShowHint = False ShowHint = True - TabOrder = 4 - end - object BLMailFlagRadioButton: TRadioButton - Left = 112 - Top = 76 - Width = 57 - Height = 24 - Hint = 'Flag DNS-blacklisted mail with an X-RBL header' - Caption = 'Flag' - ParentShowHint = False - ShowHint = True TabOrder = 5 - OnClick = BLMailFlagRadioButtonClick - end - object BLMailIgnoreRadioButton: TRadioButton - Left = 176 - Top = 76 - Width = 57 - Height = 24 - Hint = 'Pretend to receive DNS-blacklisted mail ' - Caption = 'Ignore' - ParentShowHint = False - ShowHint = True - TabOrder = 6 - OnClick = BLMailFlagRadioButtonClick end - object BLMailRefuseRadioButton: TRadioButton - Left = 248 - Top = 76 - Width = 73 - Height = 24 - Hint = 'Refuse mail session with DNS-blacklisted servers' - Caption = 'Refuse' - ParentShowHint = False - ShowHint = True - TabOrder = 7 - OnClick = BLMailFlagRadioButtonClick - end - object BLMailFlagEdit: TEdit + object MaxRecipientsEdit: TEdit Left = 113 - Top = 100 - Width = 185 + Top = 44 + Width = 48 Height = 24 - Hint = 'Flag to add to subject of DNS-blacklisted mail' + Hint = 'Maximum number of recipients for a single message' ParentShowHint = False ShowHint = True - TabOrder = 8 + TabOrder = 2 end end object POP3TabSheet: TTabSheet @@ -399,7 +383,7 @@ object MailCfgDlg: TMailCfgDlg Left = 250 Top = 108 Width = 65 - Height = 26 + Height = 24 Hint = 'Use TCP packets (instead of UDP) for DNS queries' Caption = 'TCP' ParentShowHint = False @@ -558,6 +542,131 @@ object MailCfgDlg: TMailCfgDlg OnClick = OutboundSoundButtonClick end end + object DNSBLTabSheet: TTabSheet + Caption = 'DNSBL' + ImageIndex = 5 + ParentShowHint = False + ShowHint = True + object Label1: TLabel + Left = 128 + Top = 104 + Width = 41 + Height = 16 + Caption = 'Label1' + end + object DNSBLServersButton: TButton + Left = 8 + Top = 8 + Width = 113 + Height = 26 + Hint = 'DNS-based Blacklists' + Caption = 'Blacklists' + TabOrder = 0 + OnClick = DNSBLServersButtonClick + end + object DNSBLGroupBox: TGroupBox + Left = 8 + Top = 40 + Width = 321 + Height = 161 + Caption = 'Mail from Blacklisted Servers:' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + object BLSubjectLabel: TLabel + Left = 16 + Top = 92 + Width = 80 + Height = 26 + AutoSize = False + Caption = 'Subject' + end + object BLHeaderLabel: TLabel + Left = 16 + Top = 121 + Width = 80 + Height = 26 + AutoSize = False + Caption = 'Header' + end + object BLRefuseRadioButton: TRadioButton + Left = 16 + Top = 28 + Width = 153 + Height = 24 + Hint = 'Refuse mail session with blacklisted servers' + Caption = 'Refuse Session' + ParentShowHint = False + ShowHint = True + TabOrder = 0 + OnClick = DNSBLRadioButtonClick + end + object BLIgnoreRadioButton: TRadioButton + Left = 16 + Top = 57 + Width = 161 + Height = 24 + Hint = 'Pretend to receive blacklisted mail' + Caption = 'Silently Ignore' + ParentShowHint = False + ShowHint = True + TabOrder = 2 + OnClick = DNSBLRadioButtonClick + end + object BLBadUserRadioButton: TRadioButton + Left = 168 + Top = 28 + Width = 129 + Height = 24 + Hint = 'Refuse mail address from blacklisted servers' + Caption = 'Refuse Mail' + TabOrder = 1 + OnClick = DNSBLRadioButtonClick + end + object BLTagRadioButton: TRadioButton + Left = 168 + Top = 57 + Width = 97 + Height = 24 + Hint = 'Tag blacklisted mail with header and/or subject' + Caption = 'Tag with:' + ParentShowHint = False + ShowHint = True + TabOrder = 3 + OnClick = DNSBLRadioButtonClick + end + object BLSubjectEdit: TEdit + Left = 105 + Top = 92 + Width = 185 + Height = 24 + Hint = 'Flag to add to subject of DNS-blacklisted mail' + ParentShowHint = False + ShowHint = True + TabOrder = 4 + end + object BLHeaderEdit: TEdit + Left = 105 + Top = 121 + Width = 185 + Height = 24 + Hint = 'Flag to add to subject of DNS-blacklisted mail' + ParentShowHint = False + ShowHint = True + TabOrder = 5 + end + end + object DNSBLExemptionsButton: TButton + Left = 128 + Top = 8 + Width = 113 + Height = 26 + Hint = 'Blacklist Exempted IP addresses' + Caption = 'Exempt IPs' + TabOrder = 2 + OnClick = DNSBLExemptionsButtonClick + end + end end object OpenDialog: TOpenDialog Filter = 'Wave Files|*.wav' diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.h b/src/sbbs3/ctrl/MailCfgDlgUnit.h index 243c62d09b00f3e8ed35439209132ec5f48f9b13..8b47f530d7fb40b1c22382b88b48d87f97c72722 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.h +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.h @@ -67,7 +67,6 @@ __published: TLabel *MaxInactivityLabel; TEdit *MaxInactivityEdit; TTabSheet *SMTPTabSheet; - TLabel *BlacklistedMailLabel; TLabel *TelnetPortLabel; TEdit *SMTPPortEdit; TCheckBox *UserNumberCheckBox; @@ -106,10 +105,23 @@ __published: TLabel *DefaultUserLabel; TEdit *DefaultUserEdit; TCheckBox *AllowRelayCheckBox; - TRadioButton *BLMailFlagRadioButton; - TRadioButton *BLMailIgnoreRadioButton; - TRadioButton *BLMailRefuseRadioButton; - TEdit *BLMailFlagEdit; + TTabSheet *DNSBLTabSheet; + TButton *DNSBLServersButton; + TLabel *Label1; + TGroupBox *DNSBLGroupBox; + TRadioButton *BLRefuseRadioButton; + TRadioButton *BLIgnoreRadioButton; + TRadioButton *BLBadUserRadioButton; + TRadioButton *BLTagRadioButton; + TEdit *BLSubjectEdit; + TEdit *BLHeaderEdit; + TLabel *BLSubjectLabel; + TLabel *BLHeaderLabel; + TEdit *LinesPerYieldEdit; + TLabel *LinesPerYieldLabel; + TLabel *MaxRecipientsLabel; + TEdit *MaxRecipientsEdit; + TButton *DNSBLExemptionsButton; void __fastcall InboundSoundButtonClick(TObject *Sender); void __fastcall OutboundSoundButtonClick(TObject *Sender); void __fastcall FormShow(TObject *Sender); @@ -118,7 +130,9 @@ __published: void __fastcall DNSRadioButtonClick(TObject *Sender); void __fastcall POP3EnabledCheckBoxClick(TObject *Sender); void __fastcall SendMailCheckBoxClick(TObject *Sender); - void __fastcall BLMailFlagRadioButtonClick(TObject *Sender); + void __fastcall DNSBLRadioButtonClick(TObject *Sender); + void __fastcall DNSBLServersButtonClick(TObject *Sender); + void __fastcall DNSBLExemptionsButtonClick(TObject *Sender); private: public: virtual __fastcall TMailCfgDlg(TComponent* AOwner);