User Tools

Site Tools


протокол_smtp_и_mail_transfer_agent

This is an old revision of the document!


Протокол SMTP и Mail Transfer Agent

Пример SMTP диалога

[gate:~] # telnet gate.isp.un 25
...
HELO gate.corpX.un
...
MAIL FROM: root@gate.corpX.un
...
RCPT TO: root@gate.isp.un
...
DATA
...
To: root@gate.isp.un
Subject: test

test
.

QUIT

Конфигурация службы MTA

Установка и настройка MTA на обработку почты домена hostname

FreeBSD (sendmail)

[gate:~] # more /usr/share/sendmail/cf/README

[gate:~] # cd /etc/mail

[gate:/etc/mail] # cat gate.corpX.un.mc
OSTYPE(freebsd6)
MAILER(local)
MAILER(smtp)

[gate:/etc/mail] # make cf
[gate:/etc/mail] # make install

[gate:/etc/mail] # cat /etc/rc.conf
...
sendmail_enable="YES"

[gate:/etc/mail] # /etc/rc.d/sendmail restart

Ubuntu (postfix)

root@gate:~# apt-get install postfix mailutils
  General type of mail configuration: Internet Site
  System mail name: gate.corpX.un

root@gate:~# man 5 postconf

root@gate:~# cat /etc/aliases
# Added by installer for initial user
# root: student

root@gate:~# newaliases

Использование UA mail

Отправка почты

gate# mail root

gate# mail root@gate.corpX.un

Чтение почты

gate# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/root": 2 messages 2 new
>N  1 user@server.corpX.un      Wed Oct 26 16:33  22/814   "w"
 N  2 root@server.corpX.un      Wed Oct 26 16:35  12/425  

Команды UA mail

h 		- список писем
номер   	- читать письмо с указанным номером
d 1-4   	- удалить письма с 1 по 4
d *   	- удалить все письма
r номер 	- написать ответ на письмо с указанным номером
?		- help
q   		- выход

Настройка MTA на обработку почты домена corpX.un

Настройка DNS

FreeBSD
[gate:~] # cd /etc/namedb/master/
Ubuntu
root@gate:~# cd /var/cache/bind/
FreeBSD/Ubuntu
gate# cat corpX.un
$TTL    3h
corp13.un. SOA ns root.gate 1 1d 12h 1w 3h
        NS      ns
        A       172.16.1.13
...

gate# nslookup -q=A corpX.un

Настройка MTA sendmail (FreeBSD)

[gate:/etc/mail] # cat gate.corpX.un.mc
OSTYPE(freebsd6)
FEATURE(use_cw_file)
MAILER(local)
MAILER(smtp)

[gate:/etc/mail] # cat local-host-names
corpX.un

[gate:/etc/mail] # make install

[gate:/etc/mail] # /etc/rc.d/sendmail restart

Настройка MTA postfix (Ubuntu)

root@gate:~# rcsdiff /etc/postfix/main.cf
< mydestination = gate.corpX.un, localhost.corpX.un, , localhost
---
> mydestination = gate.corpX.un, localhost.corpX.un, corpX.un, localhost

root@gate:~# /etc/init.d/postfix force-reload

Настройка MTA на использование MTA провайдера

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

postfix (Ubuntu)

root@server:~# apt-get install postfix mailutils
  General type of mail configuration: Internet Site
  System mail name: server.corpX.un

root@gate:~# cat /etc/aliases
# Added by installer for initial user
# root: student

root@gate:~# newaliases

root@server:~# rcsdiff /etc/postfix/main.cf
35c35
< relayhost =
---
> relayhost = gate.corpX.un

Настройка MTA на релеинг почты из локальной сети

sendmail (FreeBSD)

[gate:/etc/mail] # cat gate.corpX.un.mc
OSTYPE(freebsd6)
FEATURE(use_cw_file)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
MAILER(local)
MAILER(smtp)

[gate:/etc/mail] # cat access
192.168.X  RELAY

[gate:/etc/mail] # make maps
[gate:/etc/mail] # make install
[gate:/etc/mail] # /etc/rc.d/sendmail restart

postfix (Ubuntu)

root@gate:~# rcsdiff /etc/postfix/main.cf
36c36
< mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
---
> mynetworks = 127.0.0.0/8 192.168.13.0/24

Настройка MTA на релеинг почты домена server.corpX.un

Настройка в DNS MX записей домена server.corpX.un

gate# cat corpX.un
…
server     A       192.168.X.10
       MX      2      gate
       MX      1      server
…

Альтернативы:

  • Использование DNS View позволяет для внешних хостов указывать один почтовый сервер, а внутри другой.
  • /etc/mail/mailertable позволяет явно переправить почту с gate на server

Запуск MTA почтового домена server.corpX.un (FreeBSD)

[server:~] # cat /etc/rc.conf
...
sendmail_enable="YES"

[server:~] # /etc/rc.d/sendmail restart

Настройка MTA релея sendmail (FreeBSD)

[gate:/etc/mail] # cat access
...
server.corpX.un  RELAY

[gate:/etc/mail] # make maps

Попробовать команду hoststat

Попробовать To:server.corpX.un RELAY

Для решения этой задачи можно использовать /etc/mail/relay-domains

Настройка MTA релея postfix (Ubuntu)

root@gate:~# rcsdiff /etc/postfix/main.cf
40a41
> permit_mx_backup = server.corpX.un

Настройка MTA на релеинг почты на основе аутентификации

Использование почтовых псевдонимов

FreeBSD

[gate:~] # cat /etc/mail/aliases

Ubuntu

root@gate:~# cat /etc/aliases

FreeBSD/Ubuntu

...
root: student, val@gate.isp.un
...
gate# newaliases

gate# mail root

Использование виртуальных почтовых доменов

Домен server.corpX.un

Настройка DNS

gate# cat corpX.un
...
server      A       192.168.X.10
            MX   2  gate
...

Добавление учетных записей пользователей виртуального домена

FreeBSD
[gate:/etc/mail] # adduser
Username: mailuser
…
shell: nologin
…
Ubuntu
root@gate:~# adduser mailuser
...

root@gate:~# chsh mailuser
...
        Login Shell [/bin/bash]: /usr/sbin/nologin

Настройка MTA на поддержку виртуального домена

sendmail (FreeBSD)
[gate:/etc/mail] # cat access
192.168.X RELAY
# server.corpX.un RELAY

[gate:/etc/mail] # cat local-host-names
corpX.un
server.corpX.un

[gate:/etc/mail] # grep virt freebsd.mc

[gate:/etc/mail] # cat gate.corpX.un.mc
OSTYPE(freebsd6)
FEATURE(use_cw_file)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
MAILER(local)
MAILER(smtp)

[gate:/etc/mail] # cat virtusertable
root@server.corpX.un mailuser

[gate:/etc/mail] # make maps
[gate:/etc/mail] # make install
[gate:/etc/mail] # /etc/rc.d/sendmail restart
postfix (Ubuntu)
root@gate:~# rcsdiff /etc/postfix/main.cf
41c41,42
< permit_mx_backup = server.corpX.un
---
> virtual_alias_domains = server.corpX.un
> virtual_alias_maps = hash:/etc/postfix/virtual

root@gate:~# cat /etc/postfix/virtual
root@server.corpX.un     mailuser

root@gate:~# postmap /etc/postfix/virtual

root@gate:~# /etc/init.d/postfix force-reload

Тестирование

gate# mail root@server.corpX.un

gate# mail –u mailuser
протокол_smtp_и_mail_transfer_agent.1298820147.txt.gz · Last modified: 2013/05/22 13:50 (external edit)