Installation Of Postfix For Email Sending

PHOTO EMBED

Thu Dec 08 2022 07:49:53 GMT+0000 (Coordinated Universal Time)

Saved by @HristoT #c#

Създаване на мейл сървър (SMTP)
https://www.linuxbabe.com/mail-server/setup-basic-postfix-mail-sever-ubuntu
https://ubuntu.tutorials24x7.com/blog/install-mail-server-on-ubuntu-20-04-lts-using-postfix-dovecot-and-roundcube

# Виждаме името на хоста
hostname -f

# Променяме го при нужда да е както домейна (ihelp.bg)
hostnamectl set-hostname <домейна>

# Инсталация на Postfix (1 стъпка: Internet site, 2 стъпка: слагаме домейна)
sudo apt-get update
sudo apt-get install postfix -y

# Проверяваме дали процеса слуша на порта
sudo ss -lnpt | grep master

# Тестваме изпращане на имейл
echo "test email" | sendmail <някакъв Gmail или друг>

# The inbox for each user is located at /var/spool/mail/<username> or /var/mail/<username> file. 
# If you are unsure where to look for the inbox, use this command:
postconf mail_spool_directory

# The Postfix mail log is stored at /var/log/mail.log.

# За всеки поддомейн си създаваме потребител (noreply)
adduser noreply
парола: asdasd

# Трябва да се добави и порта към firewall-a

# Добавяне към накрая на файла: nano /etc/postfix/main.cf
always_add_missing_headers = yes
smtp_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtpd_tls_CApath = /etc/ssl/certs


# C# част
public class EmailClient
{
    public void SendEmail(SendEmailOptions options)
    {
        var emailConfig = Global.AppSettings.SmtpEmailConfig;

        using var client = new SmtpClient()
        {
            Host = emailConfig.Host,
            Port = emailConfig.HostPort,
            DeliveryMethod = SmtpDeliveryMethod.Network,
        };

        using var mailMessage = new MailMessage
        {
            From = new MailAddress(options.EmailFrom),
            Subject = options.Subject,
            Body = options.Message,
            IsBodyHtml = options.IsBodyHtml,
        };

        mailMessage.To.Add(string.Join(", ", options.EmailsTo));
        client.Send(mailMessage);
    }
}

public class SendEmailOptions
{
    public string EmailFrom { get; set; } = Global.AppSettings.SmtpEmailConfig.NoReplyEmail;

    public string Subject { get; set; }

    public string Message { get; set; }

    public bool IsBodyHtml { get; set; } = true;

    public List<string> EmailsTo { get; set; } = new List<string>();

    public void AddEmailsToSend(params string[] emails)
    {
        this.EmailsTo.AddRange(emails);
    }
}
  
# Конфигурация
"SmtpEmailConfig": {
      "OfficialEmail": "mail@ihelp.bg",
      "NoReplyEmail": "noreply@ihelp.bg",
      "Host": "164.138.217.194",
      "HostPort": 25
    },
content_copyCOPY