====== Сервис MTA ======
* [[https://ru.wikipedia.org/wiki/Почтовый_сервер|Почтовый сервер]]
===== Протокол SMTP =====
* [[https://www.ndchost.com/wiki/mail/test-smtp-auth-telnet|How to Test SMTP AUTH using Telnet]]
* [[Средства программирования shell#Отправка email с вложениями]] из bash
gate# telnet server.corpX.un 25
...
HELO gate.corpX.un
...
MAIL FROM: root@gate.corpX.un
...
RCPT TO: user1@server.corpX.un
...
DATA
...
From: root@gate.corpX.un
To: user1@server.corpX.un
Subject: test
test
.
QUIT
===== Настройка MTA =====
==== Установка и настройка MTA на обработку почты домена hostname ====
=== Debian/Ubuntu (postfix) ===
root@server:~# debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
root@server:~# debconf-set-selections <<< "postfix postfix/mailname string corpX.un"
root@server:~# apt install postfix
root@server:~# debconf-show postfix | grep destinations
root@server:~# man 1 postconf
root@server:~# man 5 postconf
root@server:~# postconf -n
root@server:~# postconf -d
=== Exim ===
!!! В конфигурации остается запрет отправлять почту на сервера с "серыми" ip (на курсах)
# dpkg-reconfigure exim4-config
...
intenet site, все остальное по умолчанию
...
=== FreeBSD (sendmail) ===
[server:~] # cat /etc/rc.conf
...
sendmail_enable="YES"
[server:~] # /etc/rc.d/sendmail restart
[server:~] # more /etc/mail/sendmail.cf
[server:~] # more /usr/share/sendmail/cf/README
==== Настройка MTA на обработку почты домена corpX.un ====
=== Настройка DNS ===
[[Сервис DNS#Настройка мастер сервера зоны corpX.un]]
server# nslookup -q=A corpX.un
=== Настройка MTA postfix (Debian/Ubuntu) ===
root@server:~# cat /etc/postfix/main.cf
...
mydestination = server.corpX.un, localhost.corpX.un, , localhost, corpX.un
...
root@server:~# postconf
root@server:~# service postfix check
root@server:~# service postfix reload
=== Настройка MTA sendmail (FreeBSD) ===
[server:~] # cd /etc/mail
[server:/etc/mail] # cat server.corpX.un.mc
OSTYPE(freebsd6)
FEATURE(use_cw_file)
MAILER(local)
MAILER(smtp)
[server:/etc/mail] # cat local-host-names
corpX.un
[server:/etc/mail] # make cf
[server:/etc/mail] # make install
[server:/etc/mail] # /etc/rc.d/sendmail restart
==== Настройка MTA на релеинг почты из LAN ====
=== postfix (Debian/Ubuntu) ===
root@gate:~# cat /etc/postfix/main.cf
...
mynetworks = ... 192.168.X.0/24
...
root@gate:~# service postfix reload
=== sendmail (FreeBSD) ===
[server:/etc/mail] # cat server.corpX.un.mc
OSTYPE(freebsd6)
...
FEATURE(access_db, `hash -o -T /etc/mail/access')
...
MAILER(local)
MAILER(smtp)
[server:/etc/mail] # cat access
192.168.X RELAY
[server:/etc/mail] # make maps
[server:/etc/mail] # make install
[server:/etc/mail] # /etc/rc.d/sendmail restart
==== Настройка MTA на использование MTA провайдера ====
=== postfix (Debian/Ubuntu) ===
root@server:~# cat /etc/postfix/main.cf
...
relayhost = gate.corpX.un
...
root@server:~# service postfix reload
=== sendmail (FreeBSD) ===
[server:/etc/mail] # cat server.corpX.un.mc
OSTYPE(freebsd6)
...
define(`SMART_HOST', `gate.corpX.un')
...
MAILER(local)
MAILER(smtp)
[server:/etc/mail] # make cf
[server:/etc/mail] # make install
[server:/etc/mail] # /etc/rc.d/sendmail restart
==== Настройка MTA на релеинг почты домена corpX.un ====
=== Debian/Ubuntu ===
root@gate:~# cat /etc/postfix/main.cf
...
relay_domains = $mydestination, corpX.un
root@gate:~# service postfix reload
root@gate:~# tail -f /var/log/mail.log
=== FreeBSD ===
[gate:/etc/mail] # cat gate.corpX.un.mc
OSTYPE(freebsd6)
FEATURE(access_db, `hash -o -T /etc/mail/access')
MAILER(local)
MAILER(smtp)
[gate:/etc/mail] # make install
[gate:/etc/mail] # /etc/rc.d/sendmail restart
[gate:/etc/mail] # cat access
corpX.un RELAY
[gate:/etc/mail] # make maps
[gate:~] # tail -f /var/log/maillog
==== Настройка MTA на релеинг почты на основе аутентификации ====
=== Postfix ===
* Сервер dovecot [[Сервер dovecot#Аутентификация для postfix]]
# cat /etc/postfix/main.cf
...
smtpd_tls_cert_file = /root/server.crt
smtpd_tls_key_file = /root/server.key
smtpd_use_tls = yes
...
smtpd_relay_restrictions = ... permit_sasl_authenticated ...
...
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
#for kerberos gssapi
line_length_limit = 8192
[[Thunderbird]] и [[Web интерфейс к почте#Roundcube]] используют 587-й порт
# cat /etc/postfix/master.cf
...
smtp inet n - y - - smtpd
587 inet n - y - - smtpd
...
==== Использование почтовых псевдонимов ====
* [[Регистрация событий в Linux]]
=== Debina/Ubuntu ===
# cat /etc/aliases
...
root: userX@isp.un
# root: "|logger -t mail-to-root -p mail.info"
#nagios: userX@isp.un
#nagios: student@corpX.un
support: user1, user2
...
# newaliases
# apt install logwatch
...
# mail root
==== Использование виртуальных почтовых доменов ====
=== Настройка DNS ===
Запись A или MX для домена compX.un настраивает преподаватель
server# host compX.un
...
=== Добавление учетных записей пользователей виртуальных доменов ===
[[Управление учетными записями в Linux]]
=== Настройка MTA на поддержку виртуального домена ===
== postfix (Debian/Ubuntu) ==
root@server:~# cat /etc/postfix/main.cf
...
mydestination = server.corpX.un, localhost.corpX.un, corpX.un, compX.un, localhost
virtual_alias_maps = hash:/etc/postfix/virtual
...
root@server:~# cat /etc/postfix/virtual
info@corpX.un user1
info@compX.un user2
root@server:~# postmap /etc/postfix/virtual
root@server:~# service postfix reload
gate.isp.un$ mail info@corpX.un
gate.isp.un$ mail info@compX.un
server# mail -u user1
server# mail -u user2
== sendmail (FreeBSD) ==
[server:/etc/mail] # cat local-host-names
corpX.un
compX.un
[server:/etc/mail] # cat server.corpX.un.mc
OSTYPE(freebsd6)
...
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
...
MAILER(local)
MAILER(smtp)
[server:/etc/mail] # cat virtusertable
info@corpX.un user1
info@compX.un user2
[server:/etc/mail] # make maps
[server:/etc/mail] # make install
[server:/etc/mail] # /etc/rc.d/sendmail restart
==== Сокрытие названия сервиса ====
=== Debian/Ubuntu (postfix) ===
# postconf -d | grep mail_name
# postconf -e "mail_name = Exchange"
# postconf -e 'smtpd_banner = $myhostname ESMTP $mail_name (Windows 2008R2)'
# service postfix reload
=== FreeBSD (sendmail) ===
[server:/etc/mail] # cat server.corpX.un.mc
OSTYPE(freebsd6)
...
define(`confSMTP_LOGIN_MSG', `$j Exchange (Windows 2008R2)')
...
MAILER(local)
MAILER(smtp)
[server:/etc/mail] # make cf
[server:/etc/mail] # make install
[server:/etc/mail] # /etc/rc.d/sendmail restart
===== Управление очередью сообщений =====
==== Postfix ====
# mailq | grep apache@hoster.bmstu.ru | grep '*' | cut -d'*' -f 1 | postsuper -d -