Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
server:mail [2018/03/04 00:33] – [SendMail] Sendmail thread supports TLS now. deuce | server:mail [2023/12/23 01:47] – [Configure] Add JavaScript and Failed Login Attempts sub-menus digital man | ||
---|---|---|---|
Line 16: | Line 16: | ||
The SMTP server also supports the SEND, SAML and SOML commands for delivering instant messages (a.k.a. telegrams) to users of the BBS. | The SMTP server also supports the SEND, SAML and SOML commands for delivering instant messages (a.k.a. telegrams) to users of the BBS. | ||
+ | |||
+ | ==== Recipients ==== | ||
+ | When receiving email messages via SMTP, the Synchronet mail server can match recipient names to a BBS user account by their alias or optionally, their real name. | ||
+ | |||
+ | === Special Characters === | ||
+ | Non-alphanumeric characters are ignored when matching recipient names to BBS user aliases. So for example, the following will all match the user " | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | === Real Names === | ||
+ | When matching recipient names to BBS real names (if so enabled by the sysop by setting SCFG-> | ||
+ | |||
+ | === Special Aliases === | ||
+ | Recipient names configured in '' | ||
+ | |||
+ | === User Number === | ||
+ | Receiving by user account number is also optionally supported, not not encouraged and disabled by default. | ||
==== Special Prefixes ==== | ==== Special Prefixes ==== | ||
Line 30: | Line 49: | ||
cnnreport | cnnreport | ||
| | ||
- | ==== Tags ==== | + | ==== Special Addresses |
+ | Some specially formatted destination addresses ('' | ||
- | Incoming email is scanned for To: headers | + | === FidoNet === |
+ | If the system supports [[network:FidoNet]]-style networking (has at least one address configured | ||
- | Tag is extracted, and if it is not found in '' | + | * ''//< |
- | sent to the user. If it DOES match a line in the smtptags file, the email | + | |
- | is rejected with a "no such user" error. | + | |
- | Using this this feature allows you (the sysop) to easily create " | + | Example: '' |
- | start recieving spam on one tag, just disable it. | + | |
- | ===== SendMail ===== | + | Note: the '' |
- | The SendMail Thread is responsible for delivering mail using the SMTP or ESMTP protocols, optionally authenticating using PLAIN, LOGIN, or CRAM-MD5 SMTP-AUTH methods if required by an SMTP relay server. | + | === Tags === |
- | The SendMail Thread currently can service one outgoing SMTP/ESMTP session at a time. | + | The Synchronet Mail Server recognizes the incoming special address format: '' |
- | ===== Post Office ===== | + | The //< |
+ | sent to the destination user. If the tag matches a line in the '' | ||
- | The mail server also services authenticated | + | This feature allows you (the sysop) to easily create and use "temporary" |
- | + | ||
- | The POP3 server supports client authentication via the USER or APOP methods. | + | |
- | The POP3 server can service multiple simultaneous incoming sessions. | + | ==== Anti-SPAM ==== |
- | + | ||
- | For IMAP support, see Deuce' | + | |
- | + | ||
- | ===== Anti-SPAM | + | |
The Synchronet SMTP Server contains several anti-SPAM measures: | The Synchronet SMTP Server contains several anti-SPAM measures: | ||
* DNS-based blacklist (DNSBL) look-up support with exemptions and multiple possible actions upon positive results | * DNS-based blacklist (DNSBL) look-up support with exemptions and multiple possible actions upon positive results | ||
Line 67: | Line 81: | ||
* Synchronet' | * Synchronet' | ||
- | ==== DNSBL ==== | + | === DNSBL === |
DNS-based Blacklists (DNSBL) are 3rd party databases of IP addresses whose hosts are suspected of being habitual spammers or have other security problems which make mail received from these systems highly suspicious. Different DNSBL services/ | DNS-based Blacklists (DNSBL) are 3rd party databases of IP addresses whose hosts are suspected of being habitual spammers or have other security problems which make mail received from these systems highly suspicious. Different DNSBL services/ | ||
Line 86: | Line 100: | ||
When a DNSBL service reports an IP address as " | When a DNSBL service reports an IP address as " | ||
- | === Exemptions | + | == Exemptions == |
MTA's whose IP address or hostname is listed in your '' | MTA's whose IP address or hostname is listed in your '' | ||
Line 100: | Line 114: | ||
{{: | {{: | ||
+ | |||
+ | |||
+ | ===== SendMail ===== | ||
+ | |||
+ | The Synchronet Mail Server' | ||
+ | |||
+ | Both Direct Delivery and Relaying (e.g. through intermediary mail server) is supported. | ||
+ | |||
+ | The SendMail Thread currently can service one outgoing SMTP/ESMTP session at a time. | ||
+ | |||
+ | The SendMail Thread will attempt to deliver securely (encrypted via TLS) when possible, though it will fall back to plain text delivery when necessary. | ||
+ | |||
+ | ===== Post Office ===== | ||
+ | |||
+ | The mail server also services authenticated "post office" | ||
+ | |||
+ | The POP3 server supports client authentication via the USER or APOP methods. | ||
+ | |||
+ | The POP3 server can service multiple simultaneous incoming sessions. | ||
+ | |||
+ | For IMAP support, see Deuce' | ||
+ | |||
+ | ==== Anti-SPAM ==== | ||
+ | |||
+ | The Synchronet POP3 server will filter-out SPAM-tagged mail automatically when a POP3 client logs in with ''//< | ||
+ | |||
+ | Append "# | ||
+ | SPAM-tagged messages will not be listed/ | ||
+ | example you use POP3 to download mail to your phone and have limited | ||
+ | storage or sorting options. The SPAM-tagged messages will remain in your | ||
+ | inbox on the BBS so you should use another POP3 or local mail client to | ||
+ | download and delete those messages (which could potentially include | ||
+ | false positives). | ||
+ | |||
+ | ===== Configure ===== | ||
+ | |||
+ | The Synchronet Mail Server can be configured via [[util: | ||
+ | |||
+ | < | ||
+ | ╔══════════════════════════════════════════════════════╗ | ||
+ | ║ Mail Server | ||
+ | ╠══════════════════════════════════════════════════════╣ | ||
+ | ║ │Enabled | ||
+ | ║ │Log Level | ||
+ | ║ │SMTP Interfaces | ||
+ | ║ │SMTP Port | ||
+ | ║ │Submission Support | ||
+ | ║ │Submission Port | ||
+ | ║ │Submission/ | ||
+ | ║ │Submission/ | ||
+ | ║ │POP3 Support | ||
+ | ║ │POP3 Interfaces | ||
+ | ║ │POP3 Port | ||
+ | ║ │POP3/TLS Support | ||
+ | ║ │POP3/TLS Port | ||
+ | ║ │Max Clients | ||
+ | ║ │Max Inactivity | ||
+ | ║ │Max Concurrent Connections | ||
+ | ║ │Max Recipients Per Message | ||
+ | ║ │Max Messages Waiting | ||
+ | ║ │Max Receive Message Size 100M bytes ║ | ||
+ | ║ │Default Recipient | ||
+ | ║ │Receive By User Number | ||
+ | ║ │Receive By Sysop Aliases | ||
+ | ║ │Notify Local Recipients | ||
+ | ║ │Notify Offline Recipients | ||
+ | ║ │Allow Users to Relay Mail | ||
+ | ║ │Lookup Client Hostname | ||
+ | ║ │Check Headers against DNSBL | ||
+ | ║ │DNS-Blacklisted Servers | ||
+ | ║ │Hash DNS-Blacklisted Msgs | ||
+ | ║ │Kill SPAM When Read | ||
+ | ║ │SendMail Thread... | ||
+ | ║ │JavaScript Settings... | ||
+ | ║ │Failed Login Attempts... | ||
+ | ╚══════════════════════════════════════════════════════╝ | ||
+ | </ | ||
+ | |||
+ | ... via [[monitor: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ... or by editing the '' | ||
+ | |||
+ | ==== sbbs.ini ==== | ||
+ | |||
+ | The '' | ||
+ | |||
+ | ^ Key ^ Default Value ^ Description ^ | ||
+ | | AutoStart | ||
+ | | Interface | ||
+ | | POP3Interface | ||
+ | | OutboundInterface | [global] | ||
+ | | SMTPPort | ||
+ | | SubmissionPort | ||
+ | | TLSSubmissionPort | 465 | TCP port number to listen on for incoming SMTPS (encrypted) mail-submission connections | | ||
+ | | POP3Port | ||
+ | | TLSPOP3Port | ||
+ | | MaxClients | ||
+ | | MaxConcurrentConnections | 0 | Maximum number of concurrent connections (without login) from the same IP address (0 = unlimited) | | ||
+ | | MaxInactivity | ||
+ | | MaxDeliveryAttempts | 50 | Maximum number of outbound mail delivery attempts before mail is bounced back to sender | | ||
+ | | RescanFrequency | ||
+ | | SemFileCheckFrequency | 2 | Frequency (in seconds) of checks for semaphore files | | ||
+ | | LinesPerYield | ||
+ | | MaxRecipients | ||
+ | | MaxMsgSize | ||
+ | | MaxMsgsWaiting | ||
+ | | ConnectTimeout | ||
+ | | HostName | ||
+ | | TempDirectory | ||
+ | | RelayServer | ||
+ | | RelayPort | ||
+ | | RelayUsername | ||
+ | | RelayPassword | ||
+ | | DNSServer | ||
+ | | DefaultUser | ||
+ | | DefaultCharset | ||
+ | | DNSBlacklistHeader | ||
+ | | DNSBlacklistSubject | ||
+ | | POP3Sound | ||
+ | | InboundSound | ||
+ | | OutboundSound | ||
+ | | JavaScript* | ||
+ | | LogLevel | ||
+ | | BindRetryCount | ||
+ | | BindRetryDelay | ||
+ | | LoginAttempt* | ||
+ | | Options | ||
+ | |||
+ | === Options === | ||
+ | |||
+ | The '' | ||
+ | |||
+ | ^ Option | ||
+ | | USE_SUBMISSION_PORT | Support mail submissions on the SMTP submission port | | ||
+ | | TLS_SUBMISSION | ||
+ | | ALLOW_POP3 | ||
+ | | DEBUG_POP3 | ||
+ | | TLS_POP3 | ||
+ | | DEBUG_TX | ||
+ | | DEBUG_RX_HEADER | ||
+ | | DEBUG_RX_BODY | ||
+ | | DEBUG_RX_RSP | ||
+ | | ALLOW_RX_BY_NUMBER | ||
+ | | ALLOW_SYSOP_ALIASES | Allow email to received for various administrative aliases (e.g. " | ||
+ | | NO_NOTIFY | ||
+ | | NO_HOST_LOOKUP | ||
+ | | USE_TCP_DNS | ||
+ | | NO_SENDMAIL | ||
+ | | ALLOW_RELAY | ||
+ | | SMTP_AUTH_VIA_IP | ||
+ | | DNSBL_REFUSE | ||
+ | | DNSBL_IGNORE | ||
+ | | DNSBL_BADUSER | ||
+ | | DNSBL_CHKRECVHDRS | ||
+ | | DNSBL_THROTTLE | ||
+ | | DNSBL_SPAMHASH | ||
+ | | SEND_INTRANSIT | ||
+ | | RELAY_TX | ||
+ | | RELAY_AUTH_PLAIN | ||
+ | | RELAY_AUTH_LOGIN | ||
+ | | RELAY_AUTH_CRAM_MD5 | When relaying mail to a RelayServer, | ||
+ | | NO_AUTO_EXEMPT | ||
+ | | NO_RECYCLE | ||
+ | | KILL_READ_SPAM | ||
+ | |||
+ | |||
===== External Mail Processors ===== | ===== External Mail Processors ===== | ||
- | FIXME | ||
- | ===== ListServer | + | In-bound e-mail (received via SMTP) can be intercepted and modified via one or more external mail processors. |
- | FIXME | + | |
+ | An external mail processor needs to create, remove or modify one or more files to have its impact | ||
+ | on the SMTP mail receive process. These files (created in the mail server' | ||
+ | |||
+ | ^ Name ^ Example Filename | ||
+ | | **message_text** | ||
+ | | **new_message_text** | ||
+ | | **recipient_list** | ||
+ | | **processing_error** | ||
+ | | **log_text** | ||
+ | |||
+ | Since the file **names** contain SMTP-session specific information (e.g. numbers), the filenames must be passed from the Mail Server to external mail processors via command-line or JavaScript properties. | ||
+ | |||
+ | === Message Text === | ||
+ | |||
+ | An external mail processor may either modify the **message_text** file in-place or create a **new_message_text** will be used in its place. | ||
+ | |||
+ | === Recipient List === | ||
+ | |||
+ | SMTP envelop information is stored in the **recipient_list** file. | ||
+ | |||
+ | The recipient list file has a '' | ||
+ | |||
+ | An external mail processor may add, remove, or modify recipients in the recipient list file. | ||
+ | |||
+ | An example recipient list file for 4 recipients (3 remote/ | ||
+ | |||
+ | <file ini> | ||
+ | [0] | ||
+ | To=jack.ryan@vert.synchro.net | ||
+ | ToExt=636 | ||
+ | ToNetType=5 | ||
+ | ToNetAddr=ryan.jack@gmail.com | ||
+ | [1] | ||
+ | To=steven.tyler@vert.synchro.net | ||
+ | ToExt=1080 | ||
+ | ToNetType=5 | ||
+ | ToNetAddr=someone@gmail.com | ||
+ | [2] | ||
+ | To=ricky.bobby@vert.synchro.net | ||
+ | ToExt=190 | ||
+ | [3] | ||
+ | To=austin.powers@vert.synchro.net | ||
+ | ToExt=418 | ||
+ | ToNetType=5 | ||
+ | ToNetAddr=another@yahoo.com | ||
+ | </ | ||
+ | |||
+ | * The '' | ||
+ | * The '' | ||
+ | * The '' | ||
+ | * The '' | ||
+ | |||
+ | ==== Configure ==== | ||
+ | |||
+ | The mail processors are configured in the '' | ||
+ | |||
+ | Each mail processor is specified in a separate " | ||
+ | mail processor name (or command-line) enclosed in square brackets (" | ||
+ | followed by a list of optional "key = value" pairs. | ||
+ | |||
+ | Supported '' | ||
+ | |||
+ | ^ Key ^ Default | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | If no '' | ||
+ | will be used as the command-line to execute. | ||
+ | |||
+ | Non-JavaScript mail processors (i.e. native executables), | ||
+ | '' | ||
+ | |||
+ | For a mail processor to only process mail received for specific name(s), | ||
+ | it must have a '' | ||
+ | |||
+ | Example: '' | ||
+ | process mail received for either '' | ||
+ | |||
+ | If no '' | ||
+ | incoming (SMTP) e-mail messages. | ||
+ | |||
+ | The '' | ||
+ | a list of zero or more strings to be used to determine which | ||
+ | sender addresses the mail processor should be executed for. | ||
+ | |||
+ | The strings in the to/from lists may use the Synchronet '' | ||
+ | |||
+ | == Pass-through == | ||
+ | |||
+ | If a '' | ||
+ | '' | ||
+ | forwarded (depending on the system configuration). | ||
+ | |||
+ | === JavaScript Variables === | ||
+ | |||
+ | The filenames referenced below may all be modified or created by the mail processor. | ||
+ | |||
+ | Additional (read-only) variables available to JavaScript mail processors: | ||
+ | |||
+ | ^ Variable | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | * See '' | ||
+ | |||
+ | JavaScript mail processors may be implemented as either a single " | ||
+ | string or an external JavaScript file (e.g. '' | ||
+ | |||
+ | External JavaScript mail processors ('' | ||
+ | or '' | ||
+ | If no file extension is specified on the command-line, | ||
+ | |||
+ | === Command-line Specifiers === | ||
+ | |||
+ | Command-line specifiers (variables) are available for use in external mail processor command-lines: | ||
+ | ^ Specifier ^ Description ^ | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
===== See Also ===== | ===== See Also ===== |