69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Script Version: 0.9
|
|
# Description: Check if Postfix is installed before proceeding with installation
|
|
|
|
# Validate hostname before proceeding
|
|
if [ "$(hostname)" == "$(hostname --fqdn)" ]; then
|
|
echo "Error: Hostname and fully qualified domain name must differ."
|
|
exit 1
|
|
fi
|
|
|
|
# Variables
|
|
# ========
|
|
POSTFIX_MAIN_CF=/etc/postfix/main.cf
|
|
SASL_PASSWD_FILE=/etc/postfix/sasl_passwd
|
|
SMTP_SERVER="mail.bubuit.net"
|
|
SMTP_PORT="587"
|
|
SMTP_USER="srvlogz"
|
|
SMTP_PASS="Id(Z]GtSty2S"
|
|
RECIPIENT="srvlogz@bubuit.net"
|
|
TEST_RECIPIENT="root"
|
|
MAILNAME=$(hostname --fqdn)
|
|
ALIASES_FILE="/etc/aliases"
|
|
|
|
# Check if Postfix is already installed
|
|
if dpkg -l | grep -q "^ii postfix "; then
|
|
echo "Postfix is already installed. Skipping installation."
|
|
else
|
|
# Preconfigure Postfix installation
|
|
debconf-set-selections <<< "postfix postfix/mailname string $MAILNAME"
|
|
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local only'"
|
|
|
|
# Install required packages non-interactively
|
|
apt update
|
|
apt install -y postfix libsasl2-modules mailutils
|
|
fi
|
|
|
|
# Configure Postfix for SMTP relay (only necessary changes)
|
|
postconf -e "relayhost = $SMTP_SERVER:$SMTP_PORT"
|
|
postconf -e "smtp_tls_security_level = may"
|
|
postconf -e "smtp_sasl_auth_enable = yes"
|
|
postconf -e "smtp_sasl_password_maps = hash:$SASL_PASSWD_FILE"
|
|
postconf -e "smtp_sasl_security_options = noanonymous"
|
|
|
|
# Store SMTP credentials
|
|
printf "$SMTP_SERVER:$SMTP_PORT $SMTP_USER:$SMTP_PASS\n" > $SASL_PASSWD_FILE
|
|
chmod 600 $SASL_PASSWD_FILE
|
|
postmap $SASL_PASSWD_FILE
|
|
|
|
# Update /etc/aliases
|
|
if [ -n "$RECIPIENT" ] && ! grep -q "^root: " $ALIASES_FILE; then
|
|
echo "root: $RECIPIENT" >> $ALIASES_FILE
|
|
newaliases
|
|
else
|
|
echo "Alias for root already exists, skipping update."
|
|
fi
|
|
newaliases
|
|
|
|
# Reloading Postfix configuration
|
|
systemctl reload postfix
|
|
|
|
# Test email sending
|
|
echo "Test email from Postfix SMTP relay" | mail -s "Test Subject" root
|
|
|
|
# Verify logs
|
|
# Check mail logs using: tail -f /var/log/mail.log
|
|
|
|
# Postfix setup and test email completed
|
|
|