Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Ilchomhéadain + SpamAssassin-learn + Bind

Baineann an t-alt seo le conas freastalaí ríomhphoist nua-aimseartha a bhunú.
Postfix + Dovecot. SPF + DKIM + rDNS. Le IPv6.
Le criptiú TSL. Le tacaíocht le haghaidh fearainn iolracha - cuid le teastas SSL fíor.
Le cosaint antisspam agus rátáil ard antispam ó fhreastalaithe ríomhphoist eile.
Tacaíonn comhéadain fhisiceacha iolracha.
Le OpenVPN, is trí IPv4 an nasc dó, agus a sholáthraíonn IPv6.

Mura bhfuil tú ag iarraidh na teicneolaíochtaí seo go léir a fhoghlaim, ach gur mhaith leat freastalaí den sórt sin a bhunú, ansin tá an t-alt seo duitse.

Ní dhéanann an t-alt aon iarracht gach mionsonra a mhíniú. Téann an míniú ar cad nach bhfuil cumraithe mar chaighdeán nó atá tábhachtach ó thaobh an tomhaltóra de.

Ba bhrionglóid fhada í an spreagadh chun freastalaí ríomhphoist a bhunú. Seans go bhfuil sé seo dúr, ach IMHO, tá sé i bhfad níos fearr ná a bheith ag brionglóideach faoi ghluaisteán nua ón mbranda is fearr leat.

Tá dhá spreagadh ann chun IPv6 a bhunú. Ní mór do speisialtóir TF teicneolaíochtaí nua a fhoghlaim i gcónaí chun maireachtáil. Ba mhaith liom mo chion beag a dhéanamh sa chomhrac in aghaidh na cinsireachta.

Is é an spreagadh chun OpenVPN a bhunú ach IPv6 a fháil ag obair ar an meaisín áitiúil.
Is é an spreagadh chun roinnt comhéadain fhisiceacha a bhunú ná go bhfuil comhéadan amháin agam ar mo fhreastalaí “mall ach gan teorainn” agus comhéadan eile “tapa ach le taraif”.

Is é an spreagadh chun socruithe Bind a bhunú ná go soláthraíonn mo ISP freastalaí DNS éagobhsaí, agus go mainneoidh google uaireanta freisin. Ba mhaith liom freastalaí DNS cobhsaí le haghaidh úsáide pearsanta.

Spreagadh chun alt a scríobh - scríobh mé dréacht 10 mí ó shin, agus d'fhéach mé air faoi dhó cheana féin. Fiú má bhíonn sé de dhíth ar an údar go rialta, tá an-dóchúlacht ann go mbeidh sé de dhíth ar dhaoine eile freisin.

Níl aon réiteach uilíoch ann do fhreastalaí ríomhphoist. Ach déanfaidh mé iarracht rud éigin cosúil le "déan é seo a scríobh agus ansin, nuair a oibríonn gach rud mar ba chóir, caith amach na rudaí breise."

Tá freastalaí Colocation ag an gcuideachta tech.ru. Is féidir comparáid a dhéanamh le OVH, Hetzner, AWS. Chun an fhadhb seo a réiteach, beidh an comhar le tech.ru i bhfad níos éifeachtaí.

Tá Debian 9 suiteáilte ar an bhfreastalaí.

Tá 2 chomhéadan `eno1` agus `eno2` ag an bhfreastalaí. Tá an chéad cheann gan teorainn, agus tá an dara ceann tapa, faoi seach.

Tá 3 sheoladh IP statacha, XX.XX.XX.X0 agus XX.XX.XX.X1 agus XX.XX.XX.X2 ar an gcomhéadan `eno1` agus XX.XX.XX.X5 ar an gcomhéadan `eno2` .

Ar fáil XXXX:XXXX:XXXX:XXXX::/64 sannadh líon seoltaí IPv6 a shanntar don chomhéadan `eno1` agus uaidh XXXX:XXXX:XXXX:XXXX:1:2::/96 do `eno2` ar m'iarratas.

Tá 3 réimse `domain1.com`, `domain2.com`, `domain3.com`. Tá teastas SSL ann le haghaidh `domain1.com` agus `domain3.com`.

Tá cuntas Google agam ar mhaith liom mo bhosca ríomhphoist a nascadh leis[ríomhphost faoi chosaint]` (ríomhphost a fháil agus ríomhphost a sheoladh go díreach ón gcomhéadan gmail).
Caithfidh go bhfuil bosca poist`[ríomhphost faoi chosaint]`, cóip den ríomhphost óna ba mhaith liom a fheiceáil i mo gmail. Agus is annamh a bheith in ann rud éigin a sheoladh ar son `[ríomhphost faoi chosaint]` tríd an gcomhéadan gréasáin.

Caithfidh go bhfuil bosca poist`[ríomhphost faoi chosaint]`, a úsáidfidh Ivanov óna iPhone.

Ní mór do ríomhphoist a sheoltar cloí leis na ceanglais frithspam nua-aimseartha go léir.
Ní mór an leibhéal is airde criptithe a sholáthar i líonraí poiblí.
Ba cheart go mbeadh tacaíocht IPv6 ann chun litreacha a sheoladh agus a fháil.
Ba cheart go mbeadh SpamAssassin ann nach scriosfaidh ríomhphoist choíche. Agus beidh sé Preab nó scipeáil nó a sheoladh chuig an IMAP "Turscar" fillteán.
Ní mór uathfhoghlaim SpamAssassin a chumrú: má bhogaim litir chuig an bhfillteán Turscair, foghlaimeoidh sé uaidh seo; má bhogaim litir ón bhfillteán Turscar, foghlaimeoidh sé uaidh seo. Ba cheart go mbeadh tionchar ag torthaí na hoiliúna SpamAssassin cibé an gcríochnaíonn an litir san fhillteán Turscar.
Caithfidh scripteanna PHP a bheith in ann ríomhphost a sheoladh thar ceann aon fhearainn ar fhreastalaí ar leith.
Ba cheart go mbeadh seirbhís openvpn ann, leis an gcumas IPv6 a úsáid ar chliant nach bhfuil IPv6 aige.

Ar dtús ní mór duit comhéadain agus ródú a chumrú, IPv6 san áireamh.
Ansin, beidh ort OpenVPN a chumrú, a nascfaidh trí IPv4 agus a sholáthróidh seoladh IPv6 fíor-statach don chliant. Beidh rochtain ag an gcliant seo ar gach seirbhís IPv6 ar an bhfreastalaí agus rochtain ar aon acmhainní IPv6 ar an Idirlíon.
Ansin beidh ort Postfix a chumrú chun litreacha + SPF + DKIM + rDNS agus rudaí beaga eile dá samhail a sheoladh.
Ansin beidh ort Dovecot a chumrú agus Multidomain a chumrú.
Ansin beidh ort SpamAssassin a chumrú agus oiliúint a chumrú.
Ar deireadh, suiteáil Bind.

============ Ilchomhéadain ===========

Chun comhéadain a chumrú, ní mór duit é seo a scríobh i “/etc/network/interfaces”.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
iface eno1 inet static
        address XX.XX.XX.X0/24
        gateway XX.XX.XX.1
        dns-nameservers 127.0.0.1 213.248.1.6
        post-up ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t
        post-up ip route add default via XX.XX.XX.1 table eno1t
        post-up ip rule add table eno1t from XX.XX.XX.X0
        post-up ip rule add table eno1t to XX.XX.XX.X0

auto eno1:1
iface eno1:1 inet static
address XX.XX.XX.X1
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X1
        post-up ip rule add table eno1t to XX.XX.XX.X1
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X2
        post-up ip rule add table eno1t to XX.XX.XX.X2

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE

# The secondary network interface
allow-hotplug eno2
iface eno2 inet static
        address XX.XX.XX.X5
        netmask 255.255.255.0
        post-up   ip route add XX.XX.XX.0/24 dev eno2 src XX.XX.XX.X5 table eno2t
        post-up   ip route add default via XX.XX.XX.1 table eno2t
        post-up   ip rule add table eno2t from XX.XX.XX.X5
        post-up   ip rule add table eno2t to XX.XX.XX.X5
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t

iface eno2 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:2::/96
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE

# OpenVPN network
iface tun0 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:3::/80

Is féidir na socruithe seo a chur i bhfeidhm ar aon fhreastalaí i tech.ru (le beagán comhordú le tacaíocht) agus oibreoidh sé láithreach mar ba chóir.

Má tá taithí agat ar rudaí cosúla a bhunú do Hetzner, OVH, tá sé difriúil ansin. Níos deacra.

Is é eno1 an t-ainm atá ar chárta líonra #1 (mall ach gan teorainn).
Is é eno2 ainm cárta líonra #2 (tapa, ach le taraif).
Is é tun0 ainm an chárta líonra fíorúil ó OpenVPN.
XX.XX.XX.X0 - IPv4 #1 ar eno1.
XX.XX.XX.X1 - IPv4 #2 ar eno1.
XX.XX.XX.X2 - IPv4 #3 ar eno1.
XX.XX.XX.X5 - IPv4 #1 ar eno2.
XX.XX.XX.1 - IPv4 geata.
XXXX:XXX:XXXX:XXXX::/64 - IPv6 don fhreastalaí iomlán.
XXXX:XXXX:XXXX:XXXX:1:2:/96 - IPv6 do eno2, téann gach rud eile ón taobh amuigh isteach in eno1.
XXXX:XXXX:XXXX:XXXX::1 - Geata IPv6 (is fiú a thabhairt faoi deara gur féidir/gur cheart é seo a dhéanamh ar bhealach difriúil. Sonraigh an lasc IPv6).
dns-nameservers - cuirtear 127.0.0.1 in iúl (toisc go bhfuil ceangal suiteáilte go háitiúil) agus 213.248.1.6 (tá sé seo ó tech.ru).

“table eno1t” agus “table eno2t” - is é an bhrí atá leis na rialacha bealaigh seo ná go bhfágfadh trácht a théann isteach trí eno1 -> tríd, agus go bhfágfadh trácht a théann isteach trí eno2 -> tríd. Agus freisin rachadh naisc a thionscnaíonn an freastalaí trí eno1.

ip route add default via XX.XX.XX.1 table eno1t

Leis an ordú seo sonraímid go bhfuil aon trácht dothuigthe a thagann faoi aon riail marcáilte “table eno1t” -> a sheoladh chuig an comhéadan eno1.

ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t

Leis an ordú seo sonraímid gur cheart aon trácht a thionscnaíonn an freastalaí a dhíriú chuig an gcomhéadan eno1.

ip rule add table eno1t from XX.XX.XX.X0
ip rule add table eno1t to XX.XX.XX.X0

Leis an ordú seo leagaimid síos na rialacha chun trácht a mharcáil.

auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X2
        post-up ip rule add table eno1t to XX.XX.XX.X2

Sonraíonn an bloc seo an dara IPv4 don chomhéadan eno1.

ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

Leis an ordú seo shocraigh muid an bealach ó chliaint OpenVPN go IPv4 áitiúil ach amháin XX.XX.XX.X0.
Ní thuigim fós cén fáth gur leor an t-ordú seo do gach IPv4.

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1

Seo an áit a leagamar an seoladh don chomhéadan féin. Úsáidfidh an freastalaí é mar sheoladh “amach”. Ní úsáidfear ar bhealach ar bith arís é.

Cén fáth go bhfuil " :1:1:: "chomh casta sin? Ionas go n-oibreoidh OpenVPN i gceart agus chuige seo amháin. Tuilleadh faoi seo níos déanaí.

Ar ábhar an gheata - sin mar a oibríonn sé agus tá sé sin go maith. Ach is é an bealach ceart ná IPv6 an lasc a bhfuil an freastalaí ceangailte leis a chur in iúl anseo.

Mar sin féin, ar chúis éigin stopann IPv6 ag obair má dhéanaim é seo. Is dócha gur fadhb tech.ru de shaghas éigin é seo.

ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE

Tá sé seo ag cur seoladh IPv6 leis an gcomhéadan. Má theastaíonn céad seoladh uait, ciallaíonn sé sin céad líne sa chomhad seo.

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
...
iface eno2 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:2::/96
...
iface tun0 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:3::/80

Thug mé faoi deara seoltaí agus subnets gach comhéadain chun é a dhéanamh soiléir.
eno1 - ní mór "/64" - mar is é seo ár linn iomlán de sheoltaí.
tun0 - caithfidh an subnet a bheith níos mó ná eno1. Seachas sin, ní bheidh sé indéanta geata IPv6 a chumrú do chliaint OpenVPN.
eno2 - caithfidh an subnet a bheith níos mó ná tun0. Seachas sin, ní bheidh cliaint OpenVPN in ann rochtain a fháil ar sheoltaí IPv6 áitiúla.
Ar mhaithe le soiléireacht, roghnaigh mé céim subnet de 16, ach más mian leat, is féidir leat fiú céim “1” a dhéanamh.
Dá réir sin, 64+16 = 80, agus 80+16 = 96.

Ar mhaithe le soiléireacht níos mó fós:
XXXX:XXXX:XXXX:XXXX:1:1:BBBB:BBBB seoltaí ar cheart iad a shannadh do shuíomhanna nó seirbhísí ar leith ar an gcomhéadan eno1.
XXXX:XXXX:XXXX:XXXX:1:2:BBBB:BBBB seoltaí ar cheart iad a shannadh do shuíomhanna nó seirbhísí ar leith ar an gcomhéadan eno2.
XXXX:XXXX:XXXX:XXXX:1:3:BBBB:YYYY is seoltaí iad ba cheart a shannadh do chliaint OpenVPN nó a úsáid mar sheoltaí seirbhíse OpenVPN.

Chun an líonra a chumrú, ba cheart go bhféadfaí an freastalaí a atosú.
Déantar athruithe IPv4 a phiocadh suas nuair a dhéantar iad (bí cinnte go ndéanfaidh tú é a fhilleadh ar an scáileán - nó ní dhéanfaidh an t-ordú seo ach an líonra a thuairteáil ar an bhfreastalaí):

/etc/init.d/networking restart

Cuir le deireadh an chomhaid “/etc/iproute2/rt_tables”:

100 eno1t
101 eno2t

Gan é seo, ní féidir leat táblaí saincheaptha a úsáid sa chomhad “/etc/network/interfaces”.
Caithfidh na huimhreacha a bheith uathúil agus níos lú ná 65535.

Is féidir athruithe IPv6 a athrú go héasca gan atosú, ach chun é seo a dhéanamh ní mór duit trí ordú ar a laghad a fhoghlaim:

ip -6 addr ...
ip -6 route ...
ip -6 neigh ...

Socrú "/etc/sysctl.conf"

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward = 1

# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0

# For receiving ARP replies
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.arp_filter = 0

# For sending ARP
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.default.arp_announce = 0

# Enable IPv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

# IPv6 configuration
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.accept_ra = 0

# For OpenVPN
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

# For nginx on boot
net.ipv6.ip_nonlocal_bind = 1

Seo iad socruithe "sysctl" mo fhreastalaí. Lig dom rud éigin tábhachtach a chur in iúl.

net.ipv4.ip_forward = 1

Gan é seo, ní oibreoidh OpenVPN ar chor ar bith.

net.ipv6.ip_nonlocal_bind = 1

Gheobhaidh duine ar bith a dhéanann iarracht IPv6 (mar shampla nginx) a cheangal díreach tar éis don chomhéadan a bheith suas earráid. Nach bhfuil an seoladh seo ar fáil.

Chun cás den sórt sin a sheachaint, déantar socrú den sórt sin.

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

Gan na socruithe IPv6 seo, ní théann trácht ón gcliant OpenVPN amach ar fud an domhain.

Níl socruithe eile ábhartha nó ní cuimhin liom cad chuige atá siad.
Ach ar eagla na heagla, fágaim “mar atá.”

Ionas gur féidir athruithe ar an gcomhad seo a phiocadh suas gan an freastalaí a atosú, ní mór duit an t-ordú a rith:

sysctl -p

Tuilleadh sonraí faoi rialacha “tábla”: habr.com/post/108690

============ OpenVPN ===========

Ní oibríonn OpenVPN IPv4 gan iptables.

Tá mo chuid iptables mar seo le haghaidh VPN:

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
##iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

Is é YY.YY.YY.YY mo sheoladh IPv4 statach den mheaisín áitiúil.
10.8.0.0/24 - IPv4 líonra openvpn. Seoltaí IPv4 do chliaint openvpn.
Tá comhsheasmhacht na rialacha tábhachtach.

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
...
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

Is teorannú é seo ionas nach féidir liom ach OpenVPN a úsáid ó mo IP statach.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
  -- или --
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE

Chun paicéid IPv4 a chur ar aghaidh idir cliaint OpenVPN agus an Idirlíon, ní mór duit ceann de na horduithe seo a chlárú.

I gcásanna éagsúla, níl ceann de na roghanna oiriúnach.
Tá an dá ordú oiriúnach do mo chás.
Tar éis dom an doiciméadú a léamh, roghnaigh mé an chéad rogha toisc go n-úsáideann sé níos lú LAP.

D'fhonn na socruithe iptables go léir a phiocadh suas tar éis atosaigh, ní mór duit iad a shábháil áit éigin.

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Níor roghnaíodh ainmneacha dá leithéid de sheans. Úsáideann an pacáiste "iptables-persistent" iad.

apt-get install iptables-persistent

Suiteáil an príomhphacáiste OpenVPN:

apt-get install openvpn easy-rsa

Déanaimis teimpléad le haghaidh deimhnithe a shocrú (cuir in ionad do luachanna):

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
ln -s openssl-1.0.0.cnf openssl.cnf

Cuirimis socruithe teimpléad an teastais in eagar:

mcedit vars

...
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Krasnodar"
export KEY_CITY="Dinskaya"
export KEY_ORG="Own"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"

# X509 Subject Field
export KEY_NAME="server"
...

Cruthaigh teastas freastalaí:

cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key

Déanaimis an cumas na comhaid deiridh “client-name.opvn” a chruthú:

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
mcedit ~/client-configs/base.conf

# Client mode
client

# Interface tunnel type
dev tun

# TCP protocol
proto tcp-client

# Address/Port of VPN server
remote XX.XX.XX.X0 1194

# Don't bind to local port/address
nobind

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Remote peer must have a signed certificate
remote-cert-tls server
ns-cert-type server

# Enable compression
comp-lzo

# Custom
ns-cert-type server
tls-auth ta.key 1
cipher DES-EDE3-CBC

Ullmhaímid script a chumasc gach comhad isteach i gcomhad opvn amháin.

mcedit ~/client-configs/make_config.sh
chmod 700 ~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} 
    <(echo -e '<ca>') 
    ${KEY_DIR}/ca.crt 
    <(echo -e '</ca>n<cert>') 
    ${KEY_DIR}/.crt 
    <(echo -e '</cert>n<key>') 
    ${KEY_DIR}/.key 
    <(echo -e '</key>n<tls-auth>') 
    ${KEY_DIR}/ta.key 
    <(echo -e '</tls-auth>') 
    > ${OUTPUT_DIR}/.ovpn

Ag cruthú an chéad chliant OpenVPN:

cd ~/openvpn-ca
source vars
./build-key client-name
cd ~/client-configs
./make_config.sh client-name

Seoltar an comhad “~/client-configs/files/client-name.ovpn” chuig gléas an chliaint.

Do chliaint iOS beidh ort an cleas seo a leanas a dhéanamh:
Ní mór ábhar an chlib "tls-auth" a bheith gan tuairimí.
Agus cuir “eochair-threo 1” díreach roimh an gclib “tls-auth”.

Déanaimis cumraíocht an fhreastalaí OpenVPN a chumrú:

cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | tee /etc/openvpn/server.conf
mcedit /etc/openvpn/server.conf

# Listen port
port 1194

# Protocol
proto tcp-server

# IP tunnel
dev tun0
tun-ipv6
push tun-ipv6

# Master certificate
ca ca.crt

# Server certificate
cert server.crt

# Server private key
key server.key

# Diffie-Hellman parameters
dh dh2048.pem

# Allow clients to communicate with each other
client-to-client

# Client config dir
client-config-dir /etc/openvpn/ccd

# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"

# Server mode and client subnets
server 10.8.0.0 255.255.255.0
server-ipv6 XXXX:XXXX:XXXX:XXXX:1:3::/80
topology subnet

# IPv6 routes
push "route-ipv6 XXXX:XXXX:XXXX:XXXX::/64"
push "route-ipv6 2000::/3"

# DNS (for Windows)
# These are OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# Configure all clients to redirect their default network gateway through the VPN
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6" #For iOS

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Ping every 10s. Timeout of 120s.
keepalive 10 120

# Enable compression
comp-lzo

# User and group
user vpn
group vpn

# Log a short status
status openvpn-status.log

# Logging verbosity
##verb 4

# Custom config
tls-auth ta.key 0
cipher DES-EDE3-CBC

Tá sé seo ag teastáil chun seoladh statach a shocrú do gach cliant (ní gá, ach úsáidim é):

# Client config dir
client-config-dir /etc/openvpn/ccd

Na sonraí is deacra agus is tábhachtaí.

Ar an drochuair, níl a fhios ag OpenVPN fós conas geata IPv6 a chumrú go neamhspleách do chliaint.
Caithfidh tú é seo a chur ar aghaidh “de láimh” do gach cliant.

# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"

Comhad “/etc/openvpn/server-clientconnect.sh”:

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
        echo $ipv6
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Create proxy rule
/sbin/ip -6 neigh add proxy $ipv6 dev eno1

Comhad “/etc/openvpn/server-clientdisconnect.sh”:

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Delete proxy rule
/sbin/ip -6 neigh del proxy $ipv6 dev eno1

Úsáideann an dá script an comhad “/etc/openvpn/variables”:

# Subnet
prefix=XXXX:XXXX:XXXX:XXXX:2:
# netmask
prefixlen=112

Bíonn sé deacair dom cuimhneamh cén fáth go bhfuil sé scríofa mar seo.

Anois tá cuma aisteach ar netmask = 112 (ba chóir go mbeadh sé 96 ceart ann).
Agus tá an réimír aisteach, ní mheaitseálann sé an líonra tun0.
Ach ceart go leor, fágfaidh mé é mar atá.

cipher DES-EDE3-CBC

Níl sé seo do gach duine - roghnaigh mé an modh seo chun an nasc a chriptiú.

Foghlaim tuilleadh faoi OpenVPN IPv4 a bhunú.

Foghlaim tuilleadh faoi OpenVPN IPv6 a bhunú.

============ Iarshocrú ===========

Suiteáil an príomhphacáiste:

apt-get install postfix

Nuair a shuiteáil tú, roghnaigh "suíomh idirlín".

Breathnaíonn mo "/etc/postfix/main.cf" mar seo:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1

smtp_tls_security_level = may
smtp_tls_ciphers = export
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_loglevel = 1

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = domain1.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = domain1.com
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4

internal_mail_filter_classes = bounce

# Storage type
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
        permit_sasl_authenticated,
        permit_mynetworks,
        #reject_invalid_hostname,
        #reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        check_policy_service unix:private/policyd-spf

smtpd_helo_restrictions =
        #reject_invalid_helo_hostname,
        #reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

smtpd_client_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_helo_hostname,
        permit

# SPF
policyd-spf_time_limit = 3600

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock

# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre

Breathnaímid ar shonraí an chumraíochta seo.

smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key

De réir cónaitheoirí Khabrovsk, tá “mífhaisnéis agus tráchtais mhíchearta” sa bhloc seo.Ní raibh ach 8 mbliana tar éis thús mo ghairm bheatha a thosaigh mé a thuiscint conas a oibríonn SSL.

Mar sin, beidh an tsaoirse agam cur síos a dhéanamh ar conas SSL a úsáid (gan na ceisteanna a fhreagairt “Conas a oibríonn sé?” agus “Cén fáth a n-oibríonn sé?”).

Is é bunús na criptithe nua-aimseartha ná péire eochair a chruthú (dhá shraith an-fhada de charachtair).

Tá “eochair” amháin príobháideach, agus an eochair eile “poiblí”. Coimeádaimid an eochair phríobháideach faoi rún go han-chúramach. Dáileann muid an eochair phoiblí ar gach duine.

Ag baint úsáide as eochair phoiblí, is féidir leat teaghrán téacs a chriptiú ionas nach féidir ach le húinéir na heochrach príobháidí é a dhíchriptiú.
Bhuel, sin é bunús iomlán na teicneolaíochta.

Céim #1 - suíomhanna https.
Nuair a fhaigheann an brabhsálaí rochtain ar shuíomh, foghlaimíonn an brabhsálaí ón bhfreastalaí gréasáin gurb é https an suíomh agus mar sin iarrann sé eochair phoiblí.
Tugann an freastalaí gréasáin an eochair phoiblí. Úsáideann an brabhsálaí an eochair phoiblí chun an http-iarratas a chriptiú agus é a sheoladh.
Ní féidir ach le daoine a bhfuil an eochair phríobháideach acu inneachar http-iarraidh, is é sin, an freastalaí a ndéantar an t-iarratas chuige a léamh.
Tá URI ar a laghad ag baint le http-request. Dá bhrí sin, má tá tír ag iarraidh rochtain a shrianadh ní ar an suíomh iomlán, ach ar leathanach ar leith, ansin tá sé dodhéanta é seo a dhéanamh do shuíomhanna https.

Céim #2 - freagra criptithe.
Soláthraíonn an freastalaí gréasáin freagra is féidir a léamh go héasca ar an mbóthar.
Tá an réiteach thar a bheith simplí - gineann an brabhsálaí go háitiúil an péire eochair phríobháideach-phoiblí céanna do gach suíomh https.
Agus in éineacht leis an iarratas ar eochair phoiblí an tsuímh, seolann sé a eochair phoiblí áitiúil.
Cuimhníonn an freastalaí gréasáin air agus, nuair a sheolann sé http-response, criptíonn sé é le heochair phoiblí cliant ar leith.
Anois ní féidir http-freagra a dhíchriptiú ach úinéir eochair phríobháideach bhrabhsálaí an chliaint (is é sin, an cliant féin).

Céim Uimh. 3 - nasc slán a bhunú trí chainéal poiblí.
Tá leochaileacht ag baint le sampla Uimh. 2 - ní chuireann aon rud cosc ​​ar dhaoine atá sásta iarratas http a idircheapadh agus faisnéis a chur in eagar faoin eochair phoiblí.
Mar sin, feicfidh an t-idirghabhálaí go soiléir ábhar na dteachtaireachtaí a sheoltar agus a fuarthas go dtí go n-athraíonn an cainéal cumarsáide.
Tá sé thar a bheith simplí déileáil leis seo - níl le déanamh ach eochair phoiblí an bhrabhsálaí a sheoladh mar theachtaireacht criptithe le heochair phoiblí an fhreastalaí gréasáin.
Ansin seolann an freastalaí gréasáin freagra cosúil le “d’eochair phoiblí mar seo” ar dtús agus criptíonn sé an teachtaireacht seo leis an eochair phoiblí chéanna.
Féachann an brabhsálaí ar an bhfreagra - má fhaightear an teachtaireacht “d'eochair phoiblí mar seo” - is ráthaíocht 100% é seo go bhfuil an cainéal cumarsáide seo slán.
Cé chomh sábháilte é?
Tarlaíonn cruthú cainéal cumarsáide slán dá leithéid ag luas ping*2. Mar shampla 20ms.
Caithfidh eochair phríobháideach ceann de na páirtithe a bheith ag an ionsaitheoir roimh ré. Nó faigh eochair phríobháideach i gceann cúpla milleasoicind.
Tógfaidh sé scór bliain ar shárríomhaire chun eochair phríobháideach nua-aimseartha amháin a hackáil.

Céim #4 - bunachar sonraí poiblí eochracha poiblí.
Ar ndóigh, sa scéal iomlán seo tá deis ann d'ionsaitheoir suí ar an gcainéal cumarsáide idir an cliant agus an freastalaí.
Is féidir leis an gcliant ligean air féin gurb é an freastalaí é, agus is féidir leis an bhfreastalaí ligean air féin gurb é an cliant é. Agus aithris a dhéanamh ar péire eochracha sa dá threo.
Ansin feicfidh an t-ionsaitheoir an trácht go léir agus beidh sé in ann an trácht a “eagarthóireacht”.
Mar shampla, athraigh an seoladh chun airgead a sheoladh nó an pasfhocal a chóipeáil ó bhaincéireacht ar líne nó bac a chur ar ábhar “saincheisteach”.
Chun dul i ngleic le hionsaitheoirí den sórt sin, tháinig siad suas le bunachar sonraí poiblí le heochracha poiblí do gach suíomh https.
Tá a fhios ag gach brabhsálaí go bhfuil thart ar 200 bunachar sonraí dá leithéid ann. Tagann sé seo réamhshuiteáilte i ngach brabhsálaí.
Tacaíonn eochair phoiblí ó gach teastas le “Eolas”. Is é sin le rá, ní féidir an nasc le gach údarás deimhniúcháin ar leith a bhréagnú.

Anois tá tuiscint shimplí ar conas SSL a úsáid le haghaidh https.
Má úsáideann tú d'inchinn, beidh sé soiléir conas is féidir leis na seirbhísí speisialta rud éigin sa struchtúr seo a hack. Ach cosnóidh sé iarrachtaí monstrous iad.
Agus eagraíochtaí níos lú ná an NSA nó CIA - tá sé beagnach dodhéanta a hack an leibhéal cosanta atá ann cheana féin, fiú amháin le haghaidh daoine mór le rá.

Cuirfidh mé isteach freisin faoi naisc ssh. Níl aon eochracha poiblí ann, mar sin cad is féidir leat a dhéanamh? Réitítear an cheist ar dhá bhealach.
Rogha ssh-by-password:
Le linn an chéad nasc, ba cheart don chliant ssh rabhadh a thabhairt go bhfuil eochair phoiblí nua againn ón bhfreastalaí ssh.
Agus le linn naisc bhreise, má fheictear an rabhadh “eochair phoiblí nua ón bhfreastalaí ssh”, ciallóidh sé go bhfuil siad ag iarraidh cluas a chur ort.
Nó bhí tú cluasaithe ar do chéad nasc, ach anois déanann tú cumarsáid leis an bhfreastalaí gan idirghabhálaithe.
I ndáiríre, mar gheall ar an bhfíric go bhfuil an fíoras wiretapping le fios go héasca, go tapa agus effortlessly, tá an ionsaí a úsáidtear ach amháin i gcásanna speisialta do chliaint ar leith.

Rogha ssh-by-eochair:
Glacann muid tiomáint flash, scríobh an eochair phríobháideach don fhreastalaí ssh air (tá téarmaí agus go leor nuances tábhachtacha le haghaidh seo, ach táim ag scríobh clár oideachais, ní treoracha úsáide).
Fágaimid an eochair phoiblí ar an meaisín ina mbeidh an cliant ssh agus coinnímid faoi rún é freisin.
Cuirimid an tiomáint flash chuig an bhfreastalaí, cuir isteach é, cóipeáil an eochair phríobháideach, agus sruthán an tiomáint flash agus scaipeann an luaithreach go dtí an ghaoth (nó ar a laghad é a fhormáid le nialais).
Sin é go léir - tar éis oibríocht den sórt sin beidh sé dodhéanta nasc ssh den sórt sin a hack. Ar ndóigh, i gceann 10 mbliana beifear in ann trácht a fheiceáil ar shárríomhaire - ach sin scéal difriúil.

Gabhaim mo leithscéal as an offtopic.

Mar sin anois go bhfuil an teoiric ar eolas. Inseoidh mé duit faoin sreabhadh a bhaineann le deimhniú SSL a chruthú.

Ag baint úsáide as “openssl genrsa” cruthaímid eochair phríobháideach agus “bearnaí” don eochair phoiblí.
Seolaimid na “bearnaí” chuig cuideachta tríú páirtí, agus íocaimid tuairim is $9 léi ​​as an deimhniú is simplí.

Tar éis cúpla uair an chloig, faigheann muid ár n-eochair “phoiblí” agus sraith eochracha poiblí éagsúla ón gcuideachta tríú páirtí seo.

Is ceist ar leith í cén fáth ar chóir do chuideachta tríú páirtí íoc as mo eochair phoiblí a chlárú, ní bhreithneofar anseo í.

Anois tá sé soiléir cad é an bhrí atá leis an inscríbhinn:

smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key

Tá na comhaid go léir le haghaidh saincheisteanna ssl san fhillteán “/etc/ssl”.
domain1.com - ainm fearainn.
Is í 2018 an bhliain cruthaithe eochair.
“eochair” - ainmniú gur eochair phríobháideach an comhad.

Agus brí an chomhaid seo:

smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
domain1.com - ainm fearainn.
Is í 2018 an bhliain cruthaithe eochair.
chained - ainmniú go bhfuil slabhra eochracha poiblí ann (is é an chéad cheann ár n-eochair phoiblí agus is é an chuid eile cad a tháinig ón gcuideachta a d'eisigh an eochair phoiblí).
crt - ainmniú go bhfuil deimhniú réamhdhéanta (eochair phoiblí le mínithe teicniúla).

smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1

Ní úsáidtear an socrú seo sa chás seo, ach scríobhtar mar shampla é.

Toisc earráid sa pharaiméadar seo beidh sé mar thoradh ar thurscar a sheoladh ó do fhreastalaí (gan d'uacht).

Ansin cruthaigh do gach duine nach bhfuil tú ciontach.

recipient_delimiter = +

B'fhéidir nach bhfuil a fhios ag go leor daoine, ach is carachtar caighdeánach é seo le haghaidh ríomhphoist a rangú, agus tá an chuid is mó de na freastalaithe ríomhphoist nua-aimseartha ag tacú leis.

Mar shampla, má tá bosca ríomhphoist agat "[ríomhphost faoi chosaint]"bain triail as a sheoladh chuig"[ríomhphost faoi chosaint]"- féach cad a thagann de.

inet_protocols = ipv4

D'fhéadfadh sé seo a bheith mearbhall.

Ach ní mar sin amháin atá sé. Níl i ngach fearann ​​nua ach IPv4 de réir réamhshocraithe, ansin casaim IPv6 ar gach ceann díobh ar leithligh.

virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Anseo sonraímid go dtéann gach ríomhphost isteach chuig an chollann.
Agus na rialacha maidir le fearann, bosca poist, ailias - breathnú sa bhunachar sonraí.

/etc/postfix/mysql-virtual-mailbox-domains.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_domains WHERE name='%s'

/etc/postfix/mysql-virtual-mailbox-maps.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_users WHERE email='%s'

/etc/postfix/mysql-virtual-alias-maps.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT destination FROM virtual_aliases WHERE source='%s'

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

Anois tá a fhios ag postfix nach féidir glacadh le post lena sheoladh breise ach amháin tar éis údarú a fháil le colm.

Ní thuigim i ndáiríre cén fáth a ndéantar é seo a mhacasamhlú anseo. Tá gach rud a theastaíonn i “virtual_transport” sonraithe againn cheana féin.

Ach tá an córas postfix an-sean - is dócha gur cúlú ó na seanlaethanta é.

smtpd_recipient_restrictions =
        ...

smtpd_helo_restrictions =
        ...

smtpd_client_restrictions =
        ...

Is féidir é seo a chumrú ar bhealach difriúil do gach freastalaí ríomhphoist.

Tá 3 fhreastalaí ríomhphoist agam agus tá na socruithe seo an-difriúil mar gheall ar riachtanais úsáide éagsúla.

Ní mór duit é a chumrú go cúramach - ar shlí eile cuirfidh turscar isteach chugat, nó níos measa fós - doirtfidh turscar amach uait.

# SPF
policyd-spf_time_limit = 3600

Socrú do roinnt breiseán a bhaineann le seiceáil an SPF na litreacha isteach.

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock

Is é an socrú nach mór dúinn síniú DKIM a sholáthar le gach ríomhphost atá ag dul amach.

# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre

Is sonraí tábhachtacha é seo i ródú litreacha agus litreacha á seoladh ó scripteanna PHP.

Comhad “/etc/postfix/sdd_transport.pcre”:

/^[email protected]$/ domain1:
/^[email protected]$/ domain2:
/^[email protected]$/ domain3:
/@domain1.com$/             domain1:
/@domain2.com$/             domain2:
/@domain3.com$/             domain3:

Ar an taobh clé tá nathanna rialta. Ar dheis tá lipéad a mharcálann an litir.
Postfix i gcomhréir leis an lipéad - cuirfear san áireamh cúpla línte cumraíochta níos mó le haghaidh litir ar leith.

Léireofar in “master.cf” cé chomh díreach agus a athchumrófar postfix do litir shonrach.

Is iad línte 4, 5, 6 na cinn is mó. Thar ceann an fhearainn a bhfuil an litir á sheoladh againn, cuirimid an lipéad seo.
Ach ní i gcónaí a léirítear an réimse “ó” i scripteanna PHP sa seanchód. Ansin tagann an t-ainm úsáideora chun an tarrthála.

Tá an t-alt fairsing cheana féin - níor mhaith liom go gcuirfí isteach orm trí nginx + fpm a bhunú.

Go hachomair, do gach suíomh leagamar a úinéir linux-úsáideoir féin. Agus dá réir sin do fpm-linn.

Úsáideann Fpm-pool aon leagan de php (tá sé iontach nuair a bhíonn tú ar an bhfreastalaí céanna is féidir leat leaganacha éagsúla de php agus fiú php.ini éagsúla a úsáid le haghaidh suíomhanna comharsanacha gan fadhbanna).

Mar sin, tá suíomh Gréasáin domain2.com ag úsáideoir linux-sonrach “www-domain2”. Tá cód ag an suíomh seo chun ríomhphoist a sheoladh gan an ón réimse a shonrú.

Mar sin, fiú sa chás seo, seolfar na litreacha i gceart agus ní bheidh siad i dturscar go deo.

Breathnaíonn mo "/etc/postfix/master.cf" mar seo:

...
smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
...
policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}
...
domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

domain2  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X5
   -o smtp_helo_name=domain2.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:2:1:1
   -o syslog_name=postfix-domain2

domain3  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X2
   -o smtp_helo_name=domain3
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:5:1
   -o syslog_name=postfix-domain3

Ní chuirtear an comhad ar fáil go hiomlán - tá sé an-mhór cheana féin.
Níor thug mé faoi deara ach an méid a athraíodh.

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Is socruithe iad seo a bhaineann le spamassasin, tuilleadh faoi sin níos déanaí.

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Ligeann muid duit ceangal leis an bhfreastalaí ríomhphoist trí phort 587.
Chun seo a dhéanamh, ní mór duit logáil isteach.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

Cumasaigh seiceáil SPF.

apt-get install postfix-policyd-spf-python

Déanaimis an pacáiste le haghaidh seiceálacha SPF thuas a shuiteáil.

domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

Agus is é seo an rud is suimiúla. Is é seo an cumas litreacha a sheoladh le haghaidh fearann ​​ar leith ó sheoladh IPv4/IPv6 ar leith.

Déantar é seo ar mhaithe le rDNS. Is é rDNS an próiseas chun sreang a fháil trí sheoladh IP.
Agus don phost, úsáidtear an ghné seo chun a dhearbhú go bhfuil an hello ag teacht go díreach le rDNS an seoladh ónar seoladh an ríomhphost.

Mura n-oireann an hello leis an bhfearann ​​​​ríomhphoist ar seoladh an litir thar a cheann, bronntar pointí turscair.

Ní hionann Helo agus rDNS - bronntar go leor pointí turscair.
Dá réir sin, ní mór do gach fearann ​​a sheoladh IP féin a bheith aige.
Le haghaidh OVH - sa chonsól is féidir rDNS a shonrú.
Le haghaidh tech.ru - réitítear an cheist trí thacaíocht.
Maidir le AWS, réitítear an cheist trí thacaíocht.
“inet_protocols” agus “smtp_bind_address6” - cumasaimid tacaíocht IPv6.
Le haghaidh IPv6 ní mór duit rDNS a chlárú freisin.
“syslog_name” - agus tá sé seo chun na logaí a léamh go héasca.

Ceannaigh deimhnithe Molaim anseo.

Nasc postfix+dovecot á shocrú anseo.

Socrú SPF.

============ Colmán ===========

apt-get install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql dovecot-antispam

Mysql a shocrú, na pacáistí a shuiteáil iad féin.

Comhad "/etc/dovecot/conf.d/10-auth.conf"

disable_plaintext_auth = yes
auth_mechanisms = plain login

Níl údarú ach criptithe.

Comhad “/etc/dovecot/conf.d/10-mail.conf”

mail_location = maildir:/var/mail/vhosts/%d/%n

Anseo cuirimid in iúl an suíomh stórála do na litreacha.

Ba mhaith liom iad a stóráil i gcomhaid agus a ghrúpáil de réir fearainn.

Comhad "/etc/dovecot/conf.d/10-master.conf"

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 995
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service imap {
}
service pop3 {
}
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

Is é seo an príomhchomhad cumraíochta dovecot.
Anseo díchumasaimid naisc neamhurraithe.
Agus naisc shlána a chumasú.

Comhad "/etc/dovecot/conf.d/10-ssl.conf"

ssl = required
ssl_cert = </etc/nginx/ssl/domain1.com.2018.chained.crt
ssl_key = </etc/nginx/ssl/domain1.com.2018.key
local XX.XX.XX.X5 {
  ssl_cert = </etc/nginx/ssl/domain2.com.2018.chained.crt
  ssl_key =  </etc/nginx/ssl/domain2.com.2018.key
}

Socrú ssl. Léirímid go bhfuil ssl ag teastáil.
Agus an deimhniú féin. Agus is mionsonra tábhachtach é an treoir “áitiúil”. Léiríonn sé cén teastas SSL atá le húsáid agus tú ag nascadh cén IPv4 áitiúil.

Dála an scéil, níl IPv6 cumraithe anseo, ceartóidh mé an easnamh seo níos déanaí.
XX.XX.XX.X5 (fearann2) - gan aon deimhniú. Chun cliaint a nascadh ní mór duit domain1.com a shonrú.
XX.XX.XX.X2 (domain3) - tá deimhniú ann, is féidir leat domain1.com nó domain3.com a shonrú chun cliaint a nascadh.

Comhad "/etc/dovecot/conf.d/15-lda.conf"

protocol lda {
  mail_plugins = $mail_plugins sieve
}

Beidh sé seo ag teastáil le haghaidh spamassassin sa todhchaí.

Comhad "/etc/dovecot/conf.d/20-imap.conf"

protocol imap {
  mail_plugins = $mail_plugins antispam
}

Is breiseán antispam é seo. Ag teastáil le haghaidh traenála spamassasin ag an am aistrithe chuig/ón bhfillteán “Turscar”.

Comhad "/etc/dovecot/conf.d/20-pop3.conf"

protocol pop3 {
}

Níl ann ach comhad den sórt sin.

Comhad “/etc/dovecot/conf.d/20-lmtp.conf”

protocol lmtp {
  mail_plugins = $mail_plugins sieve
  postmaster_address = [email protected]
}

Socrú lmtp.

Comhad "/etc/dovecot/conf.d/90-antispam.conf"

plugin {
  antispam_backend = pipe
  antispam_trash = Trash;trash
  antispam_spam = Junk;Spam;SPAM
  antispam_pipe_program_spam_arg = --spam
  antispam_pipe_program_notspam_arg = --ham
  antispam_pipe_program = /usr/bin/sa-learn
  antispam_pipe_program_args = --username=%Lu
}

Socruithe traenála Spamassasin ag an am aistrithe chuig/ón bhfillteán Turscar.

Comhad "/etc/dovecot/conf.d/90-sieve.conf"

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  sieve_after = /var/lib/dovecot/sieve/default.sieve
}

Comhad a shonraíonn cad ba cheart a dhéanamh le litreacha isteach.

Comhad "/var/lib/dovecot/sieve/default.sieve"

require ["fileinto", "mailbox"];

if header :contains "X-Spam-Flag" "YES" {
        fileinto :create "Spam";
}

Ní mór duit an comhad a thiomsú: “sievec default.sieve”.

Comhad "/etc/dovecot/conf.d/auth-sql.conf.ext"

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

Comhaid sql a shonrú le haghaidh údarú.
Agus úsáidtear an comhad féin mar mhodh údaraithe.

Comhad "/etc/dovecot/dovecot-sql.conf.ext"

driver = mysql
connect = host=127.0.0.1 dbname=servermail user=usermail password=password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

Freagraíonn sé seo do shocruithe comhchosúla le haghaidh postfix.

Comhad "/etc/dovecot/dovecot.conf"

protocols = imap lmtp pop3
listen = *, ::
dict {
}
!include conf.d/*.conf
!include_try local.conf

Príomhchomhad cumraíochta.
Is é an rud is tábhachtaí ná go gcuirimid in iúl anseo - prótacail a chur leis.

============ SpamAssassin ===========

apt-get install spamassassin spamc

Déanaimis na pacáistí a shuiteáil.

adduser spamd --disabled-login

Cuirimis úsáideoir ar a son.

systemctl enable spamassassin.service

Cumasaimid seirbhís spamassassin uathlódála nuair a luchtaítear é.

Comhad "/etc/default/spamassassin":

CRON=1

Trí nuashonrú uathoibríoch na rialacha a chumasú “de réir réamhshocraithe”.

Comhad “/etc/spamassassin/local.cf”:

report_safe 0

use_bayes          1
bayes_auto_learn   1
bayes_auto_expire  1
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn      DBI:mysql:sa:localhost:3306
bayes_sql_username sa
bayes_sql_password password

Ní mór duit bunachar sonraí “sa” a chruthú i mysql leis an úsáideoir “sa” leis an bhfocal faire “focal faire” (rud éigin leordhóthanach a chur ina ionad).

report_safe - seolfaidh sé seo tuairisc ríomhphoist turscair seachas litir.
Is socruithe meaisínfhoghlama spamassassin iad use_bayes.

Baineadh úsáid as na socruithe spamassassin atá fágtha níos luaithe san alt.

Socrú ginearálta "spamassassin".
Maidir le ríomhphoist Turscair nua a aistriú chuig an bhfillteán “Turscar” IMAP.
Maidir le meascán simplí de Dovecot + SpamAssassin.
Molaim an teoiric foghlama spamassasin a léamh agus litreacha á mbogadh i bhfillteáin imap (agus ní mholaim é a úsáid).

============ Achomharc chuig an bpobal ===========

Ba mhaith liom freisin smaoineamh a chaitheamh isteach sa phobal faoi conas leibhéal slándála na litreacha a chuirtear ar aghaidh a mhéadú. Ós rud é go bhfuil mé tumtha chomh domhain i ábhar an phoist.

Ionas gur féidir leis an úsáideoir péire eochracha a chruthú ar a chliant (outlook, thunderbird, browser-plugin, ...). Poiblí agus príobháideach. Poiblí - seol chuig DNS. Príobháideach - shábháil ar an gcliant. Bheadh ​​freastalaithe ríomhphoist in ann eochair phoiblí a úsáid le seoladh chuig faighteoir ar leith.

Agus chun cosaint a dhéanamh i gcoinne turscar le litreacha den sórt sin (tá, ní bheidh an freastalaí ríomhphoist in ann an t-ábhar a fheiceáil) - beidh ort 3 riail a thabhairt isteach:

  1. Síniú éigeantach fíor DKIM, SPF éigeantach, rDNS éigeantach.
  2. Líonra neural ar an ábhar oiliúna antispam + bunachar sonraí chun é ar thaobh an chliaint.
  3. Caithfidh an t-algartam criptithe a bheith sa chaoi is go gcaithfidh an taobh seolta 100 uair níos mó cumhachta LAP ar chriptiú ná an taobh glactha.

Chomh maith le litreacha poiblí, forbair litir thogra chaighdeánach “chun tús a chur le comhfhreagras slán.” Seolann duine de na húsáideoirí (bosca poist) litir le ceangaltán chuig bosca poist eile. Tá moladh téacs sa litir chun tús a chur le cainéal cumarsáide slán le haghaidh comhfhreagrais agus eochair phoiblí úinéir an bhosca poist (le eochair phríobháideach ar thaobh an chliaint).

Is féidir leat fiú cúpla eochair a dhéanamh go sonrach le haghaidh gach comhfhreagrais. Is féidir leis an úsáideoir faighteora glacadh leis an tairiscint seo agus a eochair phoiblí a sheoladh (a rinneadh go sonrach don chomhfhreagras seo freisin). Ansin, seolann an chéad úsáideoir litir rialaithe seirbhíse (criptithe le eochair phoiblí an dara húsáideoir) - nuair a fhaigheann an dara úsáideoir an cainéal cumarsáide foirmithe iontaofa. Ansin, seolann an dara úsáideoir litir rialaithe - agus ansin is féidir leis an gcéad úsáideoir a mheas freisin go bhfuil an cainéal foirmithe slán.

Chun dul i ngleic le hidircheapadh eochracha ar an mbóthar, ní mór foráil a dhéanamh sa phrótacal maidir leis an bhféidearthacht eochair phoiblí amháin ar a laghad a tharchur ag baint úsáide as tiomáint flash.

Agus is é an rud is tábhachtaí ná go n-oibríonn sé go léir (is í an cheist "cé a íocfaidh as?"):
Cuir isteach deimhnithe poist ag tosú ar $10 ar feadh 3 bliana. A ligfidh don seoltóir a chur in iúl sna dns go bhfuil “m’ eochracha poiblí thall ansin.” Agus tabharfaidh siad deis duit nasc slán a thosú. Ag an am céanna, tá glacadh le naisc den sórt sin saor in aisce.
Tá gmail ag déanamh airgid ar a chuid úsáideoirí ar deireadh. Ar $10 in aghaidh 3 bliana - an ceart chun bealaí slána comhfhreagrais a chruthú.

============ Conclúid ===========

Chun an t-alt iomlán a thástáil, bhí mé chun freastalaí tiomnaithe a fháil ar cíos ar feadh míosa agus fearann ​​​​a cheannach le teastas SSL.

Ach tháinig forbairt ar chúinsí an tsaoil agus chuaigh an cheist seo ar aghaidh ar feadh 2 mhí.
Agus mar sin, nuair a bhí am saor agam arís, bheartaigh mé an t-alt a fhoilsiú mar atá, seachas an baol go leanfadh an foilseachán ar feadh bliana eile.

Má tá go leor ceisteanna cosúil le “ach ní dhéantar cur síos sách mionsonraithe air seo”, is dócha go mbeidh neart ann freastalaí tiomnaithe a ghlacadh le fearann ​​nua agus teastas SSL nua agus cur síos níos mine air agus, an chuid is mó. rud is tábhachtaí, sainaithin na sonraí tábhachtacha go léir atá in easnamh.

Ba mhaith liom freisin aiseolas a fháil ar smaointe maidir le deimhnithe poist. Más maith leat an smaoineamh, déanfaidh mé iarracht an neart a aimsiú chun dréacht a scríobh do rfc.

Agus codanna móra d’alt á chóipeáil agat, cuir nasc chuig an alt seo.
Agus tú ag aistriú go teanga ar bith eile, cuir nasc chuig an alt seo ar fáil.
Déanfaidh mé iarracht é a aistriú go Béarla mé féin agus fágfaidh mé crostagairtí.


Foinse: will.com

Add a comment