smtplmail is a drop-in replacement for sendmail, designed to send emails from Linux systems using SMTP. It provides a simple way to configure and use SMTP for outgoing mail, making it easy to integrate with existing systems that expect sendmail functionality.
- Easy setup and configuration
- Support for SSL, TLS, and unencrypted connections
- Configurable via YAML file, environment variables, or command-line flags
- Logging support with configurable log levels
- Sendmail-compatible command-line interface
-
Download the latest release binary from the Releases page.
-
Run the setup process as root:
sudo ./smtplmail --setupThis will:
- Prompt you for SMTP configuration details
- Create the configuration file at
/etc/smtplemail/smtplemail.conf - Move the binary to
/usr/local/bin/smtplmail - Create a symlink at
/usr/bin/sendmailpointing to the smtplmail binary
The configuration file is located at /etc/smtplemail/smtplemail.conf. Here's an example configuration:
smtp_user: your_username
smtp_password: your_password
smtp_host: smtp.example.com
smtp_port: "587"
smtp_security: TLS
send_from: your_email@example.com
log_file: /var/log/smtplemail/smtplemail.log
log_level: errorYou can also set these values using environment variables or command-line flags.
smtplmail can be used as a drop-in replacement for sendmail. It accepts email content via stdin and supports various command-line flags:
smtplmail [options] recipient1 [recipient2 ...]
-f: Sets the envelope sender address-F: Sets the sender's full name-N: Specifies delivery status notifications (NEVER, SUCCESS, FAILURE, DELAY)-v: Enables verbose mode for detailed output-i: Ignores single dots on a line-t: Reads recipients from the message headers (To, Cc, Bcc)
These flags can be used to override the configuration file settings:
--config: Specify an alternate configuration file location--smtp_user: SMTP username--smtp_password: SMTP password--smtp_host: SMTP server hostname--smtp_port: SMTP server port--smtp_security: SMTP security (SSL, TLS, or None)--send_from: Default "From" email address--log_file: Log file location--log_level: Log level (error or info)
Send an email using the configuration file settings:
echo "Subject: Test Email
This is a test email." | smtplmail recipient@example.com
Send an email with a custom sender:
echo "Subject: Test Email
This is a test email." | smtplmail -f sender@example.com recipient@example.com
Send an email using recipients from headers:
echo "To: recipient1@example.com
Cc: recipient2@example.com
Subject: Test Email
This is a test email." | smtplmail -t
Logs are written to the file specified in the configuration (default: /var/log/smtplemail/smtplemail.log). The log level can be set to "error" or "info" in the configuration file or using the --log_level flag.
Contributions are welcome! Please feel free to submit a Pull Request. I am still learning Go so I welcome help and advice on best practices. One of the things I was going to do is split the config and mail sending into separate files for better management.
Released under the MIT license