Nginx-ը արագորեն դառնում է ժողովրդականություն՝ վերածվելով Apache-ի համար պարզապես ստատիկ սպասարկման արագացուցիչից մինչև լիարժեք և առաջադեմ վեբ սերվեր, որն ավելի ու ավելի է օգտագործվում առանձին: Այս հոդվածում մենք կխոսենք nginx-ի օգտագործման հետաքրքիր և ոչ ստանդարտ սցենարների մասին, որոնք թույլ կտան առավելագույն օգուտ քաղել վեբ սերվերից։
Փոստի վստահված անձ
Սկսենք ամենաակնհայտից՝ nginx-ի՝ որպես փոստի վստահված անձ գործելու կարողությունից: Այս ֆունկցիան ի սկզբանե nginx-ում է, բայց ինչ-ինչ պատճառներով այն օգտագործվում է արտադրության մեջ չափազանց հազվադեպ, ոմանք նույնիսկ չգիտեն դրա գոյության մասին: Ինչ էլ որ լինի, nginx-ն աջակցում է POP3, IMAP և SMTP արձանագրությունների պրոքսիինգ՝ նույնականացման տարբեր մեթոդներով, ներառյալ SSL և StartTLS, և դա անում է շատ արագ:
Ինչու է սա անհրաժեշտ: Այս ֆունկցիոնալության առնվազն երկու օգտագործում կա: Նախ, օգտագործեք nginx-ը որպես վահան ընդդեմ նյարդայնացնող սպամերի, որոնք փորձում են անպետք նամակներ ուղարկել մեր SMTP սերվերի միջոցով: Սովորաբար սպամերները շատ խնդիրներ չեն ստեղծում, քանի որ նրանք արագորեն ցատկում են նույնականացման փուլում, սակայն, երբ դրանք իսկապես շատ են, nginx-ը կօգնի խնայել պրոցեսորի ռեսուրսները: Երկրորդ, օգտագործեք nginx-ը՝ օգտվողներին մի քանի POP3/IMAP փոստային սերվերներ վերահղելու համար: Իհարկե, փոստի մեկ այլ վստահված անձ նույնպես կարող է կարգավորել դա, բայց ինչու՞ ցանկապատել սերվերի այգին, եթե nginx-ն արդեն տեղադրված է ճակատային մասում, օրինակ, HTTP-ի միջոցով ստատիկ սպասարկելու համար:
Փոստի վստահված անձը nginx-ում այնքան էլ ստանդարտ չէ: Այն օգտագործում է նույնականացման լրացուցիչ շերտ, որն իրականացվում է HTTP-ի միջոցով, և միայն այն դեպքում, եթե օգտվողն անցնի այս արգելքը, նա փոխանցվում է: Այս ֆունկցիոնալությունը տրամադրվում է էջ/սկրիպտ ստեղծելով, որին nginx-ը տալիս է օգտվողի տվյալները, և նա պատասխան է տալիս ստանդարտ OK կամ մերժման պատճառի տեսքով (օրինակ՝ «Սխալ մուտք կամ գաղտնաբառ»): Սցենարն աշխատում է հետևյալ վերնագրերով.
Նույնականացման սկրիպտի մուտքագրում HTTP_AUTH_USER. օգտվող HTTP_AUTH_PASS. գաղտնաբառը HTTP_AUTH_PROTOCOL. փոստի արձանագրություն (IMAP, POP3 կամ SMTP)
Եվ այն վերադառնում է այսպես.
Նույնականացման սկրիպտի ելք HTTP_AUTH_STATUS. Լավ կամ ձախողման պատճառը HTTP_AUTH_SERVER. իրական փոստի սերվեր՝ HTTP_AUTH_PORT վերահղելու համար. սերվերի միացք
Այս մոտեցման ուշագրավ առանձնահատկությունն այն է, որ այն կարող է օգտագործվել ոչ թե ինքնությունը հաստատելու համար, այլ օգտատերերին ցրելու համար տարբեր ներքին սերվերներում՝ կախված օգտվողի անունից, փոստի սերվերների ընթացիկ բեռների վերաբերյալ տվյալներից կամ նույնիսկ ամենապարզ բեռի հավասարակշռումը կազմակերպելու միջոցով: շրջանաձև . Այնուամենայնիվ, եթե ձեզ պարզապես անհրաժեշտ է օգտատերերին փոխանցել ներքին փոստի սերվեր, կարող եք իրական սկրիպտի փոխարեն օգտագործել անգինքսի կողմից ներդրված կոճղը: Օրինակ, ամենապարզ SMTP և IMAP վստահված անձը nginx կոնֆիգուրայում կունենա հետևյալ տեսքը.
# vi /etc/nginx/nginx.conf mail ( # Նույնականացման սկրիպտի հասցեն auth_http localhost:8080/auth; # Անջատել XCLIENT հրամանը, որոշ փոստային սերվերներ չեն հասկանում այն xclient off; # IMAP սերվերի սերվեր (լսել 143; արձանագրություն imap; վստահված անձը միացված է;) # SMTP սերվերի սերվեր (լսել 25; արձանագրություն smtp; վստահված անձը միացված է;))
# vi /etc/nginx/nginx.conf http ( # Քարտեզ դեպի փոստային սերվերի ճիշտ նավահանգիստ՝ կախված HTTP_AUTH_PROTOCOL վերնագրի քարտեզում ուղարկված նավահանգստից $http_auth_protocol $mailport ( լռելյայն 25; smtp 25; imap 143; ) # Իրականացում նույնականացման «սկրիպտը» - միշտ վերադարձնում է OK և օգտատիրոջը վերահղում է ներքին փոստի սերվեր՝ սահմանելով ճիշտ նավահանգիստը՝ օգտագործելով վերը նշված քարտեզագրման սերվերը (լսել 8080; տեղադրություն / հաստատում ( add_header «Auth-Status» «OK»; add_header «Auth- Սերվեր" "192.168.0.1" ; add_header "Auth-Port" $mailport; վերադարձ 200; ) ) )
Դա բոլորն է: Այս կոնֆիգուրացիան թույլ է տալիս թափանցիկ կերպով վերահղել օգտվողներին ներքին փոստի սերվեր՝ առանց այս դեպքում ավելորդ սկրիպտի տեսքով գերավճար ստեղծելու: Օգտագործելով սկրիպտ՝ այս կոնֆիգուրացիան կարող է զգալիորեն ընդլայնվել՝ կարգավորել բեռի հավասարակշռումը, ստուգել օգտվողներին LDAP տվյալների բազայի համեմատ և կատարել այլ գործողություններ: Սցենար գրելը դուրս է այս հոդվածի շրջանակներից, բայց այն շատ հեշտ է իրականացնել նույնիսկ PHP-ի և Python-ի միայն տարրական իմացությամբ:
Տեսահոսք
Կանոնավոր nginx-ի վրա հիմնված վիդեո հոստինգի ստեղծումը հեշտ է. Բավական է միայն վերբեռնել տրանսկոդավորված տեսանյութը սերվերին հասանելի գրացուցակում, ավելացնել այն կոնֆիգուրացիայի մեջ և կարգավորել ֆլեշ կամ HTML5 նվագարկիչը, որպեսզի այն տեսագրություն վերցնի այս գրացուցակից: Այնուամենայնիվ, եթե ցանկանում եք կարգավորել շարունակական վիդեո հեռարձակում ինչ-որ արտաքին աղբյուրից կամ վեբ-տեսախցիկից, այս սխեման չի աշխատի, և դուք ստիպված կլինեք նայել հատուկ հոսքային արձանագրություններին:
Կան մի քանի արձանագրություններ, որոնք լուծում են այս խնդիրը, դրանցից ամենաարդյունավետն ու աջակցվողը RTMP-ն է: Միակ դժվարությունն այն է, որ RTMP սերվերի գրեթե բոլոր իրականացումները տառապում են խնդիրներից: Պաշտոնական Adobe Flash Media Server-ը վճարովի է: Red5-ը և Wowza-ն գրված են Java-ով և, հետևաբար, չեն ապահովում ցանկալի կատարումը, մեկ այլ կատարում՝ Erlyvideo-ն, գրված է Erlang-ով, որը լավ է կլաստերի տեղադրման դեպքում, բայց ոչ այնքան արդյունավետ մեկ սերվերի համար։
Ես առաջարկում եմ մեկ այլ մոտեցում՝ օգտագործել RTMP մոդուլը nginx-ի համար: Այն ունի գերազանց կատարողականություն և նաև թույլ է տալիս օգտագործել մեկ սերվեր՝ ինչպես կայքի վեբ ինտերֆեյսը, այնպես էլ վիդեո հոսքը սպասարկելու համար: Միակ խնդիրն այն է, որ այս մոդուլը ոչ պաշտոնական է, ուստի դուք ստիպված կլինեք ինքներդ կառուցել nginx դրա աջակցությամբ: Բարեբախտաբար, հավաքումն իրականացվում է ստանդարտ ձևով.
$ sudo apt-get հեռացնել nginx $ cd /tmp $ wget http://bit.ly/VyK0lU -O nginx-rtmp.zip $ unzip nginx-rtmp.zip $ wget http://nginx.org/download/nginx- 1.2.6.tar.gz $ tar -xzf nginx-1.2.6.tar.gz $ cd nginx-1.2.6 $ ./configure --add-module=/tmp/nginx-rtmp-module-master $ կատարել $ sudo make install
Այժմ մոդուլը պետք է կազմաձևվի: Դա արվում է, ինչպես միշտ, nginx config-ի միջոցով.
Rtmp ( # Ակտիվացրեք հեռարձակման սերվերը 1935-րդ նավահանգստում կայքի/rtmp սերվերում (լսեք 1935; հավելված rtmp (ուղիղ միացում; )))
RTMP մոդուլը չի կարող աշխատել բազմաշերտ կոնֆիգուրացիայի մեջ, ուստի nginx աշխատանքային գործընթացների թիվը պետք է կրճատվի մինչև մեկի (հետագայում ես ձեզ կասեմ, թե ինչպես շրջանցել այս խնդիրը).
աշխատողի_գործընթացներ 1;
Այժմ մենք կարող ենք պահպանել ֆայլը և թույլ տալ, որ nginx-ը նորից կարդա կոնֆիգուրացիան: Nginx-ի կարգավորումն ավարտված է, բայց մենք դեռ չունենք վիդեո հոսք, այնպես որ մենք պետք է այն ինչ-որ տեղ հասցնենք: Օրինակ, թող դա լինի video.avi ֆայլը ընթացիկ գրացուցակից: Այն հոսքի վերածելու և մեր RTMP հեռարձակողի մեջ փաթաթելու համար եկեք օգտագործենք հին լավ FFmpeg-ը.
# ffmpeg -re -i ~/video.avi -c պատճեն -f flv rtmp://localhost/rtmp/stream
Եթե վիդեո ֆայլը H264 ձևաչափով չէ, այն պետք է վերակոդավորվի: Դա կարելի է անել անմիջապես՝ օգտագործելով նույն FFmpeg-ը.
# ffmpeg -re -i ~/video.avi -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream
Հեռարձակումը կարող է նկարահանվել նաև անմիջապես վեբ-տեսախցիկից.
# ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -an -f flv rtmp://localhost/rtmp/stream
Հոսքը հաճախորդի կողմից դիտելու համար կարող եք օգտագործել ցանկացած RTMP միացված նվագարկիչ, օրինակ՝ mplayer:
$ mplayer rmtp://example.com/rtmp/stream
Կամ տեղադրեք նվագարկիչը անմիջապես վեբ էջում, որը սպասարկվում է նույն nginx-ի կողմից (օրինակ՝ պաշտոնական փաստաթղթերից).
Ամենապարզ RTMP վեբ նվագարկիչը
Այստեղ կա ընդամենը երկու կարևոր տող՝ «ֆայլ՝ «հոսք»՝ ցույց տալով RTMP հոսքը և «հոսող՝ «rtmp://localhost/rtmp»», որը նշում է RTMP հոսքի հասցեն։ Առաջադրանքների մեծ մասի համար այս կարգավորումները բավարար կլինեն: Մի քանի տարբեր հոսքեր կարող են գործարկվել մեկ հասցեով, և nginx-ը դրանք արդյունավետորեն կմուլտիպլեքսացնի հաճախորդների միջև: Բայց սա այն ամենը չէ, ինչի ընդունակ է RTMP մոդուլը: Նրա օգնությամբ, օրինակ, դուք կարող եք կազմակերպել վիդեո հոսքի վերահաղորդումը մեկ այլ սերվերից։ Դրա համար FFmpeg սերվերն ընդհանրապես անհրաժեշտ չէ, պարզապես կոնֆիգում ավելացրեք հետևյալ տողերը.
# vi /etc/nginx/nginx.conf հավելվածը rtmp ( ապրում է; քաշեք rtmp://rtmp.example.com; )
Եթե Ձեզ անհրաժեշտ է ստեղծել բազմաթիվ հոսքեր տարբեր որակներով, կարող եք զանգահարել FFmpeg տրանսկոդերին անմիջապես nginx-ից.
# vi /etc/nginx/nginx.conf հավելված rtmp ( ապրում է; exec ffmpeg -i rtmp://localhost/rtmp/$name -c:v flv -c:a -s 320x240 -f flv rtmp://localhost /rtmp-320x240/$name;) հավելված rtmp-320x240 (ուղիղ միացում;)
Այս կոնֆիգուրացիայով մենք կստանանք միանգամից երկու հեռարձակող, որոնցից մեկը հասանելի կլինի rtmp://site/rtmp հասցեով, իսկ երկրորդը՝ հեռարձակվող 320 x 240 որակով, rtmp://site/rtmp–320x240 հասցեով: Կայքում կարող եք կախել ֆլեշ նվագարկիչ և որակյալ ընտրության կոճակներ, որոնք նվագարկիչին կսայթաքեն հեռարձակողի այս կամ այն հասցեով:
Եվ վերջապես, ցանցին երաժշտություն հեռարձակելու օրինակ.
մինչդեռ ճշմարիտ; անել ffmpeg -re -i "`find /var/music -type f -name "*.mp3"|տեսակավորել -R|head -n 1`" -vn -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream; կատարած
git proxy
Git տարբերակի կառավարման համակարգը ի վիճակի է մուտք գործել պահեստներ ոչ միայն Git և SSH արձանագրությունների, այլ նաև HTTP-ի միջոցով։ Ժամանակին HTTP մուտքի իրականացումը պարզունակ էր և չէր կարողանում լիարժեք աշխատանք ապահովել պահեստի հետ։ 1.6.6 տարբերակից ի վեր իրավիճակը փոխվել է, և այսօր այս արձանագրությունը կարող է օգտագործվել, օրինակ, շրջանցելու firewall-ի սահմանափակումները կապի երկու կողմերում կամ ստեղծելու ձեր սեփական Git հոստինգը վեբ ինտերֆեյսով:
Ցավոք, պաշտոնական փաստաթղթերում խոսվում է միայն Apache վեբ սերվերի միջոցով Git մուտքի կազմակերպման մասին, բայց քանի որ իրականացումն ինքնին արտաքին հավելված է ստանդարտ CGI ինտերֆեյսով, այն կարող է կցվել գրեթե ցանկացած այլ սերվերի, ներառյալ lighttpd և, իհարկե, nginx. Սա այլ բան չի պահանջում, քան ինքը սերվերը, տեղադրված Git-ը և փոքրիկ FastCGI սերվերը fcgiwrap, որն անհրաժեշտ է, քանի որ nginx-ը չգիտի, թե ինչպես ուղղակիորեն աշխատել CGI-ի հետ, բայց այն կարող է կանչել սկրիպտներ՝ օգտագործելով FastCGI արձանագրությունը:
Աշխատանքի ամբողջ սխեման այսպիսի տեսք կունենա. fcgiwrap սերվերը կախված կլինի հետին պլանում և կսպասի CGI հավելվածը գործարկելու հարցում: Nginx-ը, իր հերթին, կկարգավորվի այնպես, որ պահանջի git-http-backend CGI երկուականի կատարումը FastCGI ինտերֆեյսի միջոցով ամեն անգամ, երբ մեր նշած հասցեն մուտք է գործում: Հարցում ստանալուց հետո fcgiwrap-ը կատարում է git-http-backend-ը GIT հաճախորդի կողմից փոխանցված նշված CGI արգումենտներով և վերադարձնում է արդյունքը:
Նման սխեմա իրականացնելու համար մենք նախ տեղադրում ենք fcgiwrap:
$ sudo apt-get տեղադրել fcgiwrap
Ձեզ անհրաժեշտ չէ այն կարգավորել, բոլոր պարամետրերը փոխանցվում են FastCGI արձանագրության միջոցով: Այն նաև ինքնաբերաբար կսկսվի: Հետևաբար, մնում է միայն կարգավորել nginx-ը: Դա անելու համար ստեղծեք /etc/nginx/sites-enabled/git ֆայլը (եթե այդպիսի գրացուցակ չկա, կարող եք գրել հիմնական կոնֆիգում) և դրանում գրել հետևյալը.
# vi /etc/nginx/sites-enabled/git սերվեր ( # Hang on port 8080 listen 8080; # Մեր սերվերի հասցեն (մի մոռացեք ավելացնել DNS մուտք) սերվերի անունը git.example.ru; # Logs access_log /var /log/nginx /git-http-backend.access.log; error_log /var/log/nginx/git-http-backend.error.log; # Անանուն մուտքի գտնվելու վայրի առաջնային հասցեն / ( # Վերբեռնելիս, ուղարկեք օգտվողը դեպի մասնավոր հասցե, եթե ($ arg_service ~* «git-receive-pack») (վերագրել ^ /private$uri վերջին; ) ներառել /etc/nginx/fastcgi_params; # հասցեն մեր git-http-backend fastcgi_param SCRIPT_FILENAME /usr /lib/git-core/git- http-backend; # Git շտեմարանի հասցեն fastcgi_param GIT_PROJECT_ROOT /srv/git; # Ֆայլի հասցեն fastcgi_param PATH_INFO $uri; # Սերվերի հասցե fcgiwrap fastcgi_pass 127.0.0.1:90 մուտքի համար հասցե #1: ~/private(/.*)$ ( # Օգտատիրոջ թույլտվություններ auth_basic «git անանուն միայն կարդալու, վավերացված գրություն»; # HTTP նույնականացում՝ հիմնված htpasswd auth_basic_user_file /etc/nginx/htpasswd; # FastCGI կարգավորումներ i ներառյալ /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_PROJECT_ROOT /srv/git; fastcgi_param PATH_INFO $1; fastcgi_pass 127.0.0.1:9001; ))
Այս կազմաձևը ենթադրում է երեք կարևոր բան.
- Պահեստի հասցեն կլինի /srv/git, այնպես որ սահմանեք համապատասխան թույլտվությունները՝ $ sudo chown -R www-data:www-data /srv/git
- Պահեստն ինքը պետք է ընթեռնելի լինի Anonymous-ի կողմից և թույլ տա վերբեռնել HTTP-ով. $ cd /srv/git $ git config core.sharedrepository true $ git config http.receivepack true
- Նույնականացումը կատարվում է htpasswd ֆայլի միջոցով, դուք պետք է ստեղծեք այն և դրան ավելացնեք օգտվողներ՝ $ sudo apt-get install apache2-utils $ htpasswd -c /etc/nginx/htpasswd user1 $ htpasswd /etc/nginx/htpasswd user2: .
Այսքանը, վերագործարկեք nginx:
Microcaching
Եկեք պատկերացնենք մի իրավիճակ դինամիկ, հաճախակի թարմացվող կայքի հետ, որը հանկարծ սկսում է շատ մեծ բեռներ ստանալ (դե, այն հայտնվել է ամենամեծ լրատվական կայքերից մեկի էջում) և դադարում է հաղթահարել բովանդակության վերադարձը: Իրավասու օպտիմիզացումը և ճիշտ քեշավորման սխեմայի իրականացումը երկար ժամանակ կպահանջվի, և խնդիրներն այժմ պետք է լուծվեն: Ինչ կարող ենք մենք անել?
Այս իրավիճակից նվազագույն կորուստներով դուրս գալու մի քանի եղանակ կա, բայց ամենահետաքրքիր գաղափարը Ֆեն Բեյլին է (fennb.com): Գաղափարն այն է, որ պարզապես nginx-ը դնենք սերվերի առջև և ստիպենք նրան քեշավորել բոլոր փոխանցվող բովանդակությունը, բայց ոչ միայն քեշը, այլ ընդամենը մեկ վայրկյան: Կարևորն այստեղ այն է, որ հարյուրավոր և հազարավոր կայքի այցելուներ վայրկյանում, փաստորեն, կստեղծեն միայն մեկ զանգ դեպի հետին պլան, որոնցից շատերը ստանում են քեշավորված էջ: Միևնույն ժամանակ, դժվար թե որևէ մեկը նկատի տարբերությունը, քանի որ նույնիսկ դինամիկ կայքում մեկ վայրկյանը սովորաբար ոչինչ չի նշանակում։
Այս գաղափարի իրականացման հետ կապված կազմաձևը այնքան էլ բարդ չի թվա.
# vi /etc/nginx/sites-enabled/cache-proxy # Configure cache proxy_cache_path /var/cache/nginx level=1:2 keys_zone=microcache:5m max_size=1000m; սերվեր (լսել 80; server_name example.com; # Cache հասցեի գտնվելու վայրը / ( # Cache-ը միացված է լռելյայն սահմանել $no_cache ""; # Անջատել քեշը բոլոր մեթոդների համար, բացառությամբ GET-ի և HEAD-ի, եթե ($request_method !~ ^(GET|HEAD) $ ) ( set $no_cache "1"; ) # Եթե հաճախորդը բովանդակություն է վերբեռնում կայք (no_cache = 1), մենք համոզվում ենք, որ նրան տրված տվյալները երկու վայրկյան քեշում չեն պահվում, և նա կարող է տեսնել ներբեռնման արդյունքը, եթե. ($no_cache = «1») ( add_header Set-Cookie «_mcnc=1; Max-Age=2; Path=/»; add_header X-Microcachable «0»; ) if ($http_cookie ~* «_mcnc») ( set $no_cache "1 "; ) # Միացնել / անջատել քեշը կախված փոփոխականի վիճակից no_cache proxy_no_cache $no_cache; proxy_cache_bypass $no_cache; # վստահված անձի հարցումներ իրական սերվերի proxy_pass http://appserver.example.ru; proxy_cache proxy_cache_key $scheme$host$request_method$ request_uri; proxy_cache_valid 200 1s; # Պաշտպանություն ամպրոպային երամի խնդրից proxy_cache_use_stale թարմացումից; # Ավելացնել ստանդարտ վերնագրեր proxy_set_h վերնագիր Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Մի պահեք 1 ՄԲ-ից մեծ ֆայլեր proxy_max_temp_file_size 1M; ))
Այս կազմաձևում առանձնահատուկ տեղ է զբաղեցնում «proxy_cache_use_stale updating;» տողը, առանց որի մենք կստանայինք բեռի պարբերական պայթյունավտանգ սերվերի վրա՝ քեշի թարմացման ժամանակ ստացված հարցումների պատճառով: Հակառակ դեպքում, ամեն ինչ ստանդարտ է և պետք է պարզ լինի առանց լրացուցիչ բացատրությունների:
Վստահված անձի մոտարկումը թիրախային լսարանին
Չնայած ինտերնետի արագության համատարած գլոբալ աճին, սերվերի ֆիզիկական հեռավորությունը թիրախային լսարանից դեռ շարունակում է իր դերը խաղալ: Սա նշանակում է, որ եթե ռուսական կայքն աշխատում է Ամերիկայում գտնվող ինչ-որ տեղ տեղակայված սերվերի վրա, ապա դրան մուտքի արագությունը ապրիորի ավելի դանդաղ կլինի, քան նույն թողունակությամբ ռուսական սերվերից (իհարկե, եթե փակեք ձեր աչքերը մնացած բոլոր գործոնների վրա։ ): Մեկ այլ բան այն է, որ հաճախ ավելի ձեռնտու է սերվերներ հյուրընկալել արտասահմանում, այդ թվում՝ սպասարկման առումով։ Հետևաբար, շահույթ ստանալու համար, ավելի բարձր վերադարձի դրույքաչափերի տեսքով, դուք ստիպված կլինեք գնալ հնարք:
Հնարավոր տարբերակներից մեկը՝ տեղադրել հիմնական արտադրողական սերվերը Արևմուտքում և տեղակայել ճակատային մասը, որն այնքան էլ ռեսուրս պահանջող չէ, որը տալիս է ստատիկ, Ռուսաստանում: Սա թույլ կտա արագությամբ հաղթել առանց լուրջ ծախսերի։ Fronend-ի համար nginx կազմաձևումն այս դեպքում կլինի պարզ վստահված անձի իրականացում, որը ծանոթ է բոլորիս.
# vi /etc/nginx/sites-enabled/proxy # Պահպանել քեշը 30 օր 100 ԳԲ պահեստում proxy_cache_path /var/cache/nginx level=1:2 keys_zone=static:32m inactive=30d max_size=100g; սերվեր (լսել 80; server_name example.com; # Փաստորեն, մեր վստահված անձի գտնվելու վայրը ~* .(jpg|jpeg|gif|png|ico|css|midi|wav|bmp|js|swf|flv|avi|djvu|mp3) $ ( # Backend հասցե proxy_pass back.example.com:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_proxy_add_x_proxy_fferwarded; proxy_cache_valid 30d; proxy_ignore_headers «Cache-Control» «Սպառվում է»; proxy_cache_key «$uri$is_args$args»; proxy_cache_lock միացված է; ) )
գտածոներ
Այսօր nginx-ի օգնությամբ դուք կարող եք լուծել բազմաթիվ տարբեր խնդիրներ, որոնցից շատերը ընդհանրապես կապված չեն վեբ սերվերի և HTTP պրոտոկոլի հետ։ Փոստի վստահված անձը, հոսքային սերվերը և Git ինտերֆեյսը առաջադրանքներից ընդամենը մի քանիսն են:
Այս հոդվածը կբացատրի, թե ինչպես կարգավորել NGINX Plus-ը կամ NGINX Open Source-ը որպես փոստի սերվերի կամ արտաքին փոստային ծառայության վստահված անձ:
Ներածություն
NGINX-ը կարող է վստահել IMAP, POP3 և SMTP արձանագրությունները վերին հոսքի փոստի սերվերներից մեկին, որը հյուրընկալում է փոստի հաշիվները և, հետևաբար, կարող է օգտագործվել որպես մեկ վերջնական կետ էլփոստի հաճախորդների համար: Սա կարող է բերել մի շարք առավելությունների, ինչպիսիք են.
- Փոստի սերվերների քանակի հեշտ չափում
- Փոստի սերվերի ընտրություն՝ հիմնված տարբեր կանոնների վրա, օրինակ՝ ընտրելով մոտակա սերվերը՝ հիմնվելով հաճախորդի IP հասցեի վրա
- բեռի բաշխում փոստի սերվերների միջև
Նախադրյալներ
NGINX Plus-ը (արդեն ներառում է փոստի մոդուլները, որոնք անհրաժեշտ են պրոքսի էլ.փոստի տրաֆիկի համար) կամ NGINX Open Source-ը կազմել է Փոստի մոդուլները՝ օգտագործելով --with-mail պարամետրը էլ.
$ ./կարգավորել --with-mail --with-mail_ssl_module --with-openssl=[ DIR] /openssl-1.1.1
IMAP, POP3 և/կամ SMTP փոստի սերվերներ կամ արտաքին փոստային ծառայություն
SMTP/IMAP/POP3 փոստի վստահված սերվերների կարգավորում
NGINX կազմաձևման ֆայլում.
- որ նավահանգստի համարըորոնք համապատասխանում են լսման հրահանգով սահմանված արձանագրությանը
- որ արձանագրությունարձանագրության հրահանգով (եթե նշված չէ, ավտոմատ կերպով կհայտնաբերվի լսելու հրահանգում նշված նավահանգիստից)
- թույլատրվում է իսկորոշման մեթոդներ imap_auth, pop3_auth և smtp_auth հրահանգներով.
փոստ (#...)
փոստ (server_name mail.example.com; #...)
փոստ (server_name mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; #...)
Որպես այլընտրանք, նշեք՝ արդյոք օգտագործողին տեղեկացնե՞լ վավերացման սերվերի սխալների մասին՝ նշելով proxy_pass_error_message հրահանգը: Սա կարող է հարմար լինել, երբ փոստարկղի հիշողությունը սպառվում է.
փոստ (server_name mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; proxy_pass_error_message on; #...)
Կազմաձևեք յուրաքանչյուր SMTP, IMAP կամ POP3 սերվեր սերվերի բլոկներով: Յուրաքանչյուր սերվերի համար նշեք.
սերվեր (լսել 25; արձանագրություն smtp; smtp_auth մուտք պարզ cram-md5;) սերվեր (լսել 110; արձանագրություն pop3; pop3_auth պարզ apop cram-md5;) սերվեր (լսել 143; արձանագրության imap;)
Փոստի վստահված անձի համար վավերացման կարգավորում
Հաճախորդից ստացված յուրաքանչյուր POP3/IMAP/SMTP հարցում նախ կհաստատվի արտաքին HTTP նույնականացման սերվերի վրա կամ նույնականացման սկրիպտի միջոցով: Նույնականացման սերվեր ունենալը պարտադիր է NGINX փոստային սերվերի վստահված անձի համար: Սերվերը կարող է ստեղծվել ինքներդ՝ համաձայն NGINX վավերացման արձանագրության, որը հիմնված է HTTP արձանագրության վրա:
Եթե նույնականացումը հաջող է, նույնականացման սերվերը կընտրի վերին հոսքի սերվեր և կվերահղորդի հարցումը: Այս դեպքում սերվերի պատասխանը կպարունակի հետևյալ տողերը.
HTTP/1.0 200 OK Auth-Status՝ OK Auth-Server:
Եթե նույնականացումը ձախողվի, նույնականացման սերվերը կվերադարձնի սխալի հաղորդագրություն: Այս դեպքում սերվերի պատասխանը կպարունակի հետևյալ տողերը.
HTTP/1.0 200 OK Auth-Status:
Նշենք, որ երկու դեպքում էլ պատասխանը կպարունակի HTTP/1.0 200 OKորը կարող է շփոթեցնող լինել:
Նույնականացման սերվերին ուղղված հարցումների և պատասխանների լրացուցիչ օրինակների համար տե՛ս ngx_mail_auth_http_module-ը NGINX Reference փաստաթղթերում:
SSL/TLS-ի կարգավորում փոստի վստահված անձի համար
Օգտագործելով POP3/SMTP/IMAP-ը SSL/TLS-ի միջոցով՝ դուք համոզվում եք, որ հաճախորդի և փոստային սերվերի միջև փոխանցված տվյալները ապահովված են:
SSL/TLS փոստի վստահված անձի համար միացնելու համար՝
Համոզվեք, որ ձեր NGINX-ը կազմաձևված է SSL/TLS աջակցությամբ՝ հրամանի տողում մուտքագրելով nginx -V հրամանը և ելքում փնտրելով --mail_ssl_module տողը.
$ nginx -V կազմաձևել արգումենտները՝ ... with--mail_ssl_module
Համոզվեք, որ ստացել եք սերվերի վկայականներ և անձնական բանալի և դրել դրանք սերվերի վրա: Վկայականը կարելի է ձեռք բերել վստահելի հավաստագրման մարմնից (CA) կամ ստեղծվել SSL գրադարանի միջոցով, ինչպիսին է OpenSSL-ը:
ssl վրա;
ցնցվում է;
Ավելացնել SSL վկայագրեր. նշեք դեպի վկայագրերի ուղին (որը պետք է լինի PEM ձևաչափով) ssl_certificate հրահանգով և նշեք դեպի մասնավոր բանալի ուղին ssl_certificate_key հրահանգում.
փոստ (#... ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/certs/server.key;)
Դուք կարող եք օգտագործել միայն SSL/TLS-ի ուժեղ տարբերակները և ծածկագրերը ssl_protocols և ssl_ciphers հրահանգներով, կամ կարող եք սահմանել ձեր սեփական նախընտրելի արձանագրությունները և ծածկագրերը.
փոստ (#... ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_ciphers HIGH:!aNULL:!MD5 ; )
SSL/TLS օպտիմիզացում փոստի վստահված անձի համար
Այս ակնարկները կօգնեն ձեզ ավելի արագ և անվտանգ դարձնել ձեր NGINX փոստի վստահված անձը.
Սահմանեք աշխատանքային գործընթացների թիվը հավասար պրոցեսորների թվին, երբ աշխատանքային_գործընթացների հրահանգը դրված է նույն մակարդակի վրա, ինչ փոստի համատեքստը.
worker_processes auto ; փոստ (#...)
Միացնել համօգտագործվող նիստերի քեշը և անջատել ներկառուցված նստաշրջանի քեշը ավտոմատի միջոցով; փոստ (server_name mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; proxy_pass_error_message միացված; ssl միացված; ssl_certificate /etc/ssl/certs/server. բանալի ; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_ciphers HIGH:!aNULL:!MD5; ssl_session_cache համօգտագործված:SSL:10m; ssl_session_timeout 10m; սերվեր (լսել 25 logsmmtm, սերվեր (լսել 25 loginthmtm, c. ; արձանագրություն pop3; pop3_auth պարզ apop cram-md5;) սերվեր (լսել 143; արձանագրության պատկեր;))
Այս օրինակում կան երեք էլփոստի վստահված սերվերներ՝ SMTP, POP3 և IMAP: Սերվերներից յուրաքանչյուրը կազմաձևված է SSL և STARTTLS աջակցությամբ: SSL նստաշրջանի պարամետրերը կպահվեն:
Վստահված սերվերն օգտագործում է HTTP նույնականացման սերվեր. դրա կազմաձևումը դուրս է այս հոդվածի շրջանակներից: Սերվերից ստացված բոլոր սխալ հաղորդագրությունները կվերադարձվեն հաճախորդներին:
Նգինքս- փոքր չափերով, շատ արագ, բավականին ֆունկցիոնալ վեբ սերվեր և փոստի վստահված սերվեր, մշակող Իգոր Սիսոև (rambler.ru): Համակարգի ռեսուրսների և արագության շատ ցածր սպառման, ինչպես նաև կազմաձևման ճկունության պատճառով, վեբ nginx սերվերհաճախ օգտագործվում է որպես առջեւի վերջ ավելի ծանր սերվերների համար, ինչպիսիք են Ապաչի, բարձր բեռնվածության նախագծերում։ Դասական տարբերակը մի փունջ է, Նգինքս - Ապաչի - FastCGI. Աշխատելով նման սխեմայով, nginx սերվեր, ընդունում է բոլոր հարցումները, որոնք գալիս են HTTP-ի միջոցով և, կախված կոնֆիգուրացիայից և բուն հարցումից, որոշում է՝ մշակե՞լ հարցումը և հաճախորդին տալ պատրաստի պատասխան, թե՞ մշակման հարցում ուղարկել հետին պլաններից մեկին ( Ապաչիկամ FastCGI).
Ինչպես գիտեք, Apache սերվերը յուրաքանչյուր հարցում մշակում է առանձին պրոցեսով (թեմա), որը, պետք է ասել, սպառում է համակարգային ռեսուրսների բավականին ՉԻ Քիչ քանակություն, եթե այդպիսի 10-20 պրոցես կա, դա անհեթեթություն է, իսկ եթե կա. դրանցից 100-500 կամ ավելին են, համակարգը դառնում է ոչ զվարճալի:
Փորձենք պատկերացնել նման իրավիճակ։ Ենթադրենք՝ շարունակվում է Ապաչի 300 HTTP հարցումներ գալիս են հաճախորդներից, 150 հաճախորդներ նստում են արագ վարձակալված գծերի վրա, իսկ մնացած 150-ը համեմատաբար դանդաղ ինտերնետ ալիքների վրա, նույնիսկ եթե ոչ մոդեմներում: Ի՞նչ է տեղի ունենում այս իրավիճակում: Եվ տեղի է ունենում հետևյալը, Apache վեբ սերվերը, այս 300 կապերը մշակելու համար, ստեղծում է յուրաքանչյուր պրոցեսի համար (թել), այն արագ կգեներացնի բովանդակություն, և 150 արագ հաճախորդներ անմիջապես կվերցնեն իրենց հարցումների արդյունքը, այն գործընթացները, որոնք սպասարկել են իրենց: կսպանվեն, և ռեսուրսները կթողարկվեն, իսկ 150-ը դանդաղ են, և նրանց հարցումների արդյունքները դանդաղ են տանելու, քանի որ նեղ ինտերնետ ալիքը, որի արդյունքում համակարգում կկախվեն 150 գործընթացներ: Ապաչի, սպասելով, որ հաճախորդները վերցնեն վեբ սերվերի կողմից ստեղծված բովանդակությունը՝ կուլ տալով համակարգի բազմաթիվ ռեսուրսներ: Բնականաբար, իրավիճակը հիպոթետիկ է, բայց, կարծում եմ, էությունը պարզ է. Վերը նշված իրավիճակը շտկելու համար և փաթեթը օգնում է: Հաճախորդի հարցումն ամբողջությամբ կարդալուց հետո այն փոխանցում է մշակման Ապաչի, որն իր հերթին ստեղծում է բովանդակություն և հնարավորինս արագ վերադարձնում պատրաստ պատասխանը Nginx-ին, որից հետո այն կարող է մաքուր խղճով սպանել գործընթացը և ազատել իր զբաղեցրած համակարգի ռեսուրսները: Nginx վեբ սերվեր, ստանալով հարցման արդյունքը Ապաչի, այն գրում է բուֆերի կամ նույնիսկ սկավառակի վրա գտնվող ֆայլի վրա և կարող է կամայականորեն երկար ժամանակ տալ դանդաղ հաճախորդներին, մինչդեռ նրա աշխատանքային գործընթացներն այնքան քիչ ռեսուրսներ են խլում, որ .. «նույնիսկ ծիծաղելի է դրա մասին խոսելը» ©: :) Նման սխեման զգալիորեն խնայում է համակարգի ռեսուրսները, կրկնում եմ, բայց Nginx աշխատանքային գործընթացները խղճուկ քանակությամբ ռեսուրսներ են խլում, սա առավել ևս տեղին է մեծ նախագծերի համար:
Եվ սա միայն մի փոքր մասն է այն բանի, ինչ կարող է անել Nginx սերվերը, մի մոռացեք տվյալների քեշավորման և հետ աշխատելու հնարավորության մասին: memcached. Ահա Nginx վեբ սերվերի հիմնական հատկանիշների ցանկը.
Nginx սերվերի ֆունկցիոնալությունը որպես HTTP սերվեր
- Ստատիկ բովանդակության մշակում, ինդեքսային ֆայլեր, գրացուցակների ցանկ, բաց ֆայլերի նկարագրիչի քեշ;
- Արագացված պրոքսիինգ քեշավորման, բեռի հավասարակշռման և ձախողման միջոցով;
- Արագացված աջակցություն FastCGIսերվերներ քեշավորման, բեռների հավասարակշռման և սխալների հանդուրժողականությամբ.
- Մոդուլային կառուցվածք, տարբեր ֆիլտրերի աջակցություն (SSI, XSLT, GZIP, ռեզյումե, մասնատված պատասխաններ);
- Աջակցություն SSL և TLS SNI ընդլայնումների համար;
- ip-ի վրա հիմնվածկամ անվան վրա հիմնվածվիրտուալ սերվերներ;
- KeepAlive և խողովակաշարային կապերի հետ աշխատելը;
- Հնարավորություն կազմաձևելու ցանկացած ժամանակացույց, ինչպես նաև բուֆերների քանակն ու չափը մակարդակով Apache սերվեր;
- Կատարել տարբեր գործողություններ՝ կախված հաճախորդի հասցեից.
- URI-ի փոփոխություն՝ օգտագործելով կանոնավոր արտահայտություններ;
- Հատուկ սխալի էջեր 4xx-ի և 5xx-ի համար;
- Մուտքի սահմանափակում՝ հիմնված հաճախորդի հասցեի կամ գաղտնաբառի վրա.
- Մատյան ֆայլերի ձևաչափերի կարգավորում, մատյանների ռոտացիա;
- Հաճախորդին արձագանքելու արագության սահմանափակում;
- Միաժամանակյա միացումների և հարցումների քանակի սահմանափակում.
- Աջակցություն PUT, DELETE, MKCOL, COPY և MOVE մեթոդներին;
- Կարգավորումների փոփոխություն և սերվերի թարմացում՝ առանց աշխատանքը դադարեցնելու.
- ներկառուցված Պերլ;
Nginx սերվերի ֆունկցիոնալությունը՝ որպես փոստի վստահված սերվեր
- Փոխանցում դեպի IMAP/POP3 հետին պլան՝ օգտագործելով արտաքին HTTP վավերացման սերվեր;
- Օգտագործողի SMTP-ի ստուգում արտաքին HTTP վավերացման սերվերի վրա և վերահասցեավորում ներքին SMTP սերվերին;
- Աջակցություն նույնականացման հետևյալ մեթոդներին.
- POP3 - USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- IMAP - ՄՈՒՏՔ, AUTH LOGIN/PLAIN/CRAM-MD5;
- SMTP - AUTH LOGI / PLAIN / CRAM-MD5;
- SSL աջակցություն;
- աջակցություն STARTTLS-ի և STLS-ի համար;
Օպերացիոն համակարգեր և հարթակներ, որոնք աջակցվում են Nginx վեբ սերվերի կողմից
- FreeBSD, հարթակներ 3-ից 8, i386 և amd64;
- Linux, 2.2-ից մինչև 2.6 - i386 հարթակ; Linux 2.6 - amd64;
- Solaris 9 - i386 և sun4u հարթակներ; Solaris 10 - i386, amd64 և sun4v հարթակներ;
- MacOS X հարթակներ ppc, i386;
- Windows XP, Windows Server 2003; (Ներկայումս բետա թեստավորման փուլում է)
Nginx սերվերի ճարտարապետություն և մասշտաբայնություն
- Հիմնական (գլխավոր) գործընթացը, մի քանի (կազմաձևման ֆայլում կազմաձևված) աշխատանքային գործընթացներ, որոնք աշխատում են ոչ արտոնյալ օգտվողի ներքո.
- Աջակցություն կապի կառավարման հետևյալ մեթոդներին.
- ընտրելստանդարտ մեթոդ է: Համապատասխան Nginx մոդուլը կառուցվում է ավտոմատ կերպով, եթե տվյալ հարթակում ավելի արդյունավետ մեթոդ չի գտնվել: Դուք կարող եք ստիպել, որ այս մոդուլի կառուցումը պարտադիր կերպով միացվի կամ անջատվի՝ օգտագործելով --with-select_module կամ --without-select_module կազմաձևման տարբերակները:
- հարցումստանդարտ մեթոդ է: Համապատասխան Nginx մոդուլը կառուցվում է ավտոմատ կերպով, եթե տվյալ հարթակում ավելի արդյունավետ մեթոդ չի գտնվել: Դուք կարող եք ստիպել, որ այս մոդուլի կառուցումը պարտադիր կերպով միացվի կամ անջատվի՝ օգտագործելով --with-poll_module կամ --without-poll_module կազմաձևման տարբերակները:
- հերթԱրդյունավետ մեթոդ է, որն օգտագործվում է FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 և MacOS X օպերացիոն համակարգերում: Երբ օգտագործվում է կրկնակի պրոցեսորով MacOS X մեքենաների վրա, այն կարող է միջուկի խուճապ առաջացնել:
- էպոլլ Linux 2.6+-ում օգտագործվող արդյունավետ մեթոդ է: Որոշ բաշխումներ, ինչպիսիք են SuSE 8.2-ը, ունեն 2.4 միջուկում epoll-ը աջակցող patches:
- rtsig - իրական ժամանակի ազդանշաններ, արդյունավետ մեթոդ, որն օգտագործվում է Linux 2.2.19+-ում: Լռելյայնորեն, ամբողջ համակարգի համար հերթում չի կարող լինել ոչ ավելի, քան 1024 ազդանշան: Սա բավարար չէ մեծ բեռնված սերվերների համար, հերթի չափը պետք է մեծացվի՝ օգտագործելով /proc/sys/kernel/rtsig-max միջուկի պարամետրը: Այնուամենայնիվ, Linux 2.6.6-mm2-ի դրությամբ այս տարբերակը հանված է, փոխարենը յուրաքանչյուր գործընթաց ունի առանձին ազդանշանային հերթ, որի չափը որոշվում է RLIMIT_SIGPENDING-ով:
- Երբ հերթը լցված է, nginx սերվերզրոյացնում է այն և կարգավորում է կապերը հարցման մեթոդով, մինչև իրավիճակը վերադառնա նորմալ:
- /dev/ հարցում- արդյունավետ մեթոդ, որն աջակցվում է Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ և Tru64 UNIX 5.1A+ օպերացիոն համակարգերում:
- eventport - իրադարձության նավահանգիստներ, արդյունավետ մեթոդ, որն օգտագործվում է Solaris 10-ում: Օգտագործելուց առաջ պետք է տեղադրել կարկատել՝ միջուկի խուճապից խուսափելու համար:
- Օգտագործելով kqueue մեթոդի առանձնահատկությունները, ինչպիսիք են EV_CLEAR, EV_DISABLE (միջոցառումը ժամանակավորապես անջատելու համար), NOTE_LOWAT, EV_EOF, հասանելի տվյալների քանակը, սխալի կոդերը;
- Աշխատեք sendfile (FreeBSD 3.1+, Linux 2.2.+, Mac OS X 10.5+), sendfile64 (Linux 2.4.21+) և sendfilev (Solaris 8 7/01+) հետ;
- Ընդունման ֆիլտրերի (FreeBSD 4.1+) և TCP_DEFER_ACCEPT (Linux 2.4+) աջակցություն;
- 10,000 անգործուն HTTP կապերը սպառում են մոտավորապես 2,5 մ հիշողություն;
- Տվյալների պատճենման գործողությունների նվազագույն քանակը.
iRedMail-ը բաց կոդով փոստի սերվեր է: Համագումարը հիմնված է Postfix SMTP սերվերի վրա (Mail Transfer Agent, կարճ MTA): Համագումարը ներառում է նաև՝ Dovecot, SpamAssassin, Greylist, ClamAV, SOGo Roundcube, NetData և NGINX:
Աղավնանոց- IMAP/POP3 սերվեր:
Spamassassin- սպամի զտման գործիք:
Մոխրագույն ցուցակ- հակասպամի գործիք, որը հիմնված է մոխրագույն ցուցակների վրա:
ClamAV- հակավիրուսային.
Կլոր խորանարդև SOGo- Վեբ-հաճախորդներ էլ. փոստի հետ աշխատելու համար:
Զուտ տվյալներ- իրական ժամանակում սերվերի աշխատանքի մոնիտորինգի ծրագիր:
Նգինքս- վեբ սերվեր:
Աջակցում է օպերացիոն համակարգերին՝ CentOS 7, Դեբիան 9, Ubuntu 16.04/18.04, FreeBSD 11/12և OpenBSD 6.4.
iRedMail-ն ունի վճարովի և անվճար տարբերակներ, որոնք միմյանցից տարբերվում են փոստի հավաքման iRedAdmin-ի սեփական վեբ ինտերֆեյսի ֆունկցիոնալությամբ: Անվճար տարբերակում կարող եք ստեղծել միայն տիրույթներ, օգտագործողի և ադմինիստրատորի փոստարկղեր։ Եթե Ձեզ անհրաժեշտ է ստեղծել կեղծանուն, ապա դուք չեք կարողանա դա անել անվճար տարբերակում iRedAdmin-ի միջոցով: Բարեբախտաբար, կա PostfixAdmin անունով անվճար լուծում, որը թույլ է տալիս դա անել: PostfixAdmin-ը հեշտությամբ ինտեգրվում է iRedMail-ին և հիանալի աշխատում դրա հետ:
Տեղադրում
Տեղադրելու համար մեզ անհրաժեշտ է վերը թվարկված օպերացիոն համակարգերից մեկը: Ես կօգտագործեմ Ubuntu Server 18.04-ը: Դուք նաև պետք է ունենաք գնված տիրույթի անուն և կազմաձևված DNS գոտի: Եթե դուք օգտագործում եք ձեր տիրույթի ռեգիստրարի DNS սերվերը, ապա դուք պետք է երկու գրառում կատարեք տիրույթի գոտիների կառավարման բաժնում՝ A և MX: Դուք կարող եք նաև օգտագործել ձեր սեփական DNS-ը՝ պատվիրակություն ստեղծելով ձեր տիրույթի անունների գրանցողի անձնական հաշվում:
DNS ռեգիստրատոր օգտագործելիս տիրույթի գոտի ստեղծելը
Նշում! DNS կարգավորումներն ուժի մեջ են մտնում մի քանի ժամից մինչև մեկ շաբաթ: Քանի դեռ կարգավորումներն ուժի մեջ չեն մտել, փոստային սերվերը ճիշտ չի աշխատի:
Տեղադրելու համար ներբեռնեք ընթացիկ տարբերակը iRedMail կայքից: Այս պահին այն 0.9.9 է։
# wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2
Այնուհետև հանեք ներբեռնված արխիվը:
# tar xjf iRedMail-0.9.9.tar.bz2
Արխիվի բացում
Եվ գնացեք ստեղծված թղթապանակ:
# cd iRedMail-0.9.9
Թղթապանակ iRedMail տեղադրիչով
Թղթապանակի բովանդակության ստուգում
Թղթապանակի բովանդակությունը
Եվ գործարկեք iRedMail-ի տեղադրման սցենարը:
# bash iRedMail.sh
Փոստային համակարգի տեղադրումը կսկսվի։ Տեղադրման գործընթացում դուք պետք է պատասխանեք մի շարք հարցերի: Մենք համաձայն ենք սկսել տեղադրումը:
Տեղադրման սկիզբը
Տեղադրման գրացուցակի ընտրություն
Այժմ դուք պետք է ընտրեք վեբ սերվեր: Ընտրությունը մեծ չէ, ուստի մենք ընտրում ենք NGINX:
Վեբ սերվերի ընտրություն
Այժմ դուք պետք է ընտրեք տվյալների բազայի սերվերը, որը կտեղադրվի և կկարգավորվի փոստի համակարգի հետ աշխատելու համար: Ընտրեք MariaDB:
Ընտրելով տվյալների բազայի սերվեր
Սահմանեք արմատային գաղտնաբառը տվյալների բազայի համար:
Տվյալների բազայի արմատային գաղտնաբառի ստեղծում
Այժմ մենք նշում ենք մեր փոստի տիրույթը:
Փոստի տիրույթի ստեղծում
Այնուհետև ստեղծեք գաղտնաբառ ադմինիստրատորի տուփի համար [էլփոստը պաշտպանված է] domain.ru.
Ստեղծեք էլփոստի ադմինիստրատորի գաղտնաբառ
Վեբ բաղադրիչների ընտրություն
Մենք հաստատում ենք նշված կարգավորումները:
Պարամետրերի հաստատում
Տեղադրումը սկսվեց:
Տեղադրում
Տեղադրման ավարտից հետո հաստատեք կանոնի ստեղծումը iptablesհամար SSHև վերագործարկեք firewall-ը: iRedMail-ն աշխատում է iptables. Ubuntu-ում՝ firewall-ի կառավարման ամենահաճախ օգտագործվող ծրագիրը UVW. Եթե այս կամ այն պատճառով դուք ունեք նման կարիք, ապա տեղադրեք UVW (apt install ufw) և ավելացրեք կանոններ UVW(օրինակ: ufw թույլ է տալիս «nginx full»կամ ufw թույլ է տալիս Postfix) չի արգելափակել փոստի սերվերը: Դուք կարող եք դիտել առկա կանոնների ցանկը՝ գործարկելով հրամանը. ufw հավելվածների ցանկը. Այնուհետեւ միացրեք UVW: ufw միացնել.
Ստեղծեք iptables կանոն
Firewall-ի վերագործարկում
Սա ավարտում է iRedMail-ի տեղադրումը: Համակարգը մեզ տվեց վեբ ինտերֆեյսի հասցեներ և մուտքի հավատարմագրեր: Փոստի համակարգի բոլոր բաղադրիչները միացնելու համար դուք պետք է վերագործարկեք սերվերը:
Տեղադրման ավարտը
Մենք վերագործարկում ենք:
# վերաբեռնում
Կարգավորում
Նախ անհրաժեշտ է համոզվել, որ ամեն ինչ աշխատում է: Մենք փորձում ենք մուտք գործել iReadAdmin կառավարման վահանակ՝ հասցեով https://domain/iredadmin. Մուտք գործել [էլփոստը պաշտպանված է] domain.ru, գաղտնաբառը ստեղծվել է տեղադրման ժամանակ։ Առկա է ռուսալեզու ինտերֆեյս։
Ինչպես տեսնում եք, ամեն ինչ աշխատում է: iRedAdmin մուտք գործելիս, ամենայն հավանականությամբ, ստացել եք անվտանգության սխալ՝ կապված վկայագրի հետ: Դա պայմանավորված է նրանով, որ iRedMail-ն ունի ինքնստորագրված վկայագիր, որի վրա զննարկիչը երդվում է: Այս խնդիրը շտկելու համար դուք պետք է տեղադրեք վավեր SSL վկայագիր: Եթե գնել եք մեկը, կարող եք տեղադրել այն: Օրինակում ես կտեղադրեմ անվճար SSL Let's Encrypt-ից:
Let's Encrypt SSL վկայագրի տեղադրում
Մենք կտեղադրենք վկայագիրը՝ օգտագործելով certbot կոմունալ ծրագիրը: Եկեք նախ ավելացնենք պահեստ:
# add-apt-repository ppa:certbot/certbot
Այնուհետև մենք ինքնին տեղադրում ենք certboot-ը՝ անհրաժեշտ բաղադրիչներով:
# apt տեղադրել python-certbot-nginx
Մենք վկայական ենք ստանում.
# certbot --nginx -d domain.ru
Հրամանը գործարկելուց հետո համակարգը ձեզ կխնդրի մուտքագրել էլփոստի հասցե, մուտքագրեք: Դրանից հետո, ամենայն հավանականությամբ, կստանաք սխալ, որ հնարավոր չէ գտնել սերվերի բլոկը, որի համար ստեղծվել է վկայագիրը: Այս դեպքում դա նորմալ է, քանի որ մենք չունենք որևէ սերվերի բլոկ: Մեզ համար գլխավորը վկայական ստանալն է։
վկայական ստանալը
Ինչպես տեսնում եք, սերտիֆիկատը հաջողությամբ ստացվեց, և համակարգը մեզ ցույց տվեց դեպի վկայագիր և դեպի բանալին տանող ուղիները: Նրանք հենց այն են, ինչ մեզ պետք է: Ընդհանուր առմամբ, մենք ստացել ենք 4 ֆայլ, որոնք կպահվեն «/etc/letsencrypt/live/domain» թղթապանակում։ Այժմ մենք պետք է վեբ սերվերին տեղեկացնենք մեր վկայագրի մասին, այսինքն՝ փոխարինենք ներդրված վկայականը նոր ստացածով: Դա անելու համար մենք պետք է խմբագրենք ընդամենը մեկ ֆայլ:
# nano /etc/nginx/templates/ssl.tmpl
Եվ դրա մեջ փոխեք վերջին երկու տողերը։
SSL վկայագրի փոխարինում
Մենք փոխում ենք ֆայլի ուղիները այն ուղիներով, որոնք համակարգը մեզ ասել է վկայագիրը ստանալու ժամանակ:
SSL վկայագրի փոխարինում
Եվ վերագործարկեք NGINX-ը:
# ծառայության nginx վերագործարկում
Հիմա եկեք փորձենք նորից մուտք գործել: iRedAdmin.
SSL վկայագրի ստուգում
Այլևս վկայագրի սխալ չկա: Վկայականը վավեր է: Դուք կարող եք սեղմել կողպեքի վրա և տեսնել դրա հատկությունները: Երբ վկայագրի ժամկետը լրանա, certboot-ը պետք է այն ինքնաբերաբար թարմացնի:
Այժմ խոսենք Dovecot և Postfix վկայականի մասին: Դա անելու համար մենք կխմբագրենք երկու կոնֆիգուրացիայի ֆայլ: Մենք անում ենք:
# nano /etc/dovecot/dovecot.conf
Բլոկ գտնելը.
#SSL: Համաշխարհային կարգավորումներ:
Իսկ այնտեղ գրանցված վկայականը փոխում ենք մերը։
Dovecot-ի վկայականի փոխարինում
Ուշադրություն դարձրեք նաև «ssl_protocols» տողին: Դրա արժեքը պետք է լինի «!SSLv3», հակառակ դեպքում դուք կստանաք «Զգուշացում. SSLv2-ը չի աջակցվում OpenSSL-ի կողմից: Խնդրում ենք հաշվի առնել այն հեռացնելու ssl_protocols» սխալը Dovecot-ը վերագործարկելիս:
# nano /etc/postfix/main.cf
Բլոկ գտնելը.
# SSL բանալի, վկայագիր, CA
Եվ մենք դրա մեջ եղած ուղիները փոխում ենք դեպի մեր վկայագրի ֆայլերի ուղիները:
Վկայագրի փոխարինում Postfix-ի համար
Սա ավարտում է վկայագրի տեղադրումը: Անհրաժեշտ է վերագործարկել Dovecot-ը և Postfix-ը, բայց ավելի լավ է վերագործարկել սերվերը:
# սպասարկման աղավնանոցի վերագործարկում
# վերաբեռնում
PHPMyAdmin-ի տեղադրում
Այս տարրը կամընտիր է, բայց ես խորհուրդ եմ տալիս լրացնել այն և տեղադրել PHPMyAdmin՝ ձեր տվյալների բազայի փորձի համար:
# apt տեղադրել phpmyadmin
Տեղադրողը ձեզ կխնդրի աշխատել, թե որ վեբ սերվերի հետ պետք է կարգավորել PHPMyAdmin-ը, քանի որ NGINX-ն այս ցանկում չէ, պարզապես սեղմեք TAB և շարժվեք առաջ:
PHPMyAdmin-ի տեղադրում
Տեղադրումն ավարտվելուց հետո, որպեսզի phpmyadmin-ը աշխատի, դուք պետք է սիմհղում կազմեք այն գրացուցակին, որի հետ լռելյայն աշխատում է NGINX-ը:
# ln -s /usr/share/phpmyadmin /var/www/html
Եվ փորձեք գնալ https://domain/phpmyadmin/
PHPMyAdmin-ն աշխատում է: Կապը պաշտպանված է վկայականով, սխալներ չկան։ Առաջ շարժվել. Եկեք ստեղծենք MySQL տվյալների բազայի ադմինիստրատոր (MariaDB):
# mysql
Եվ մենք մտնում ենք MariaDB կառավարման վահանակ: Հաջորդը, մենք մեկ առ մեկ կատարում ենք հրամանները.
MariaDB > ՍՏԵՂԾԵԼ ՕԳՏԱԳՈՐԾՈՂ «admin»@»localhost», որը նույնականացվում է «գաղտնաբառով»;
MariaDB > ՏՐԱՄԱԴՐԵԼ ԲՈԼՈՐ ԱՐՏՈՆՈՒԹՅՈՒՆՆԵՐԸ *.*-ին "admin"@"localhost"-ին GRANT OPTION-ով;
MariaDB > FLUSH ԱՐՏՈՆՈՒԹՅՈՒՆՆԵՐ;
MySQL օգտվողի ստեղծում
Ամեն ինչ կարգին է, դուք մուտք եք գործել: PHPMyAdmin-ը պատրաստ է:
PostfixAdmin-ի տեղադրում
Սկզբունքորեն, PostfixAdmin-ը, ինչպես PHPMyAdmin-ը, չի կարող տեղադրվել: Փոստի սերվերը լավ կաշխատի առանց այս բաղադրիչների: Բայց հետո դուք չեք կարողանա ստեղծել փոստի կեղծանուններ: Եթե դա ձեզ պետք չէ, ապա ազատ զգալ բաց թողնել այս բաժինները: Եթե ձեզ դեռևս անհրաժեշտ են այլանուններ, ապա ունեք երկու տարբերակ՝ գնել iReaAdmin-ի վճարովի տարբերակը կամ տեղադրել PostfixAdmin: Իհարկե, դուք կարող եք դա անել առանց լրացուցիչ ծրագրաշարի` ձեռքով տվյալների բազայում մականուններ գրելով, բայց դա միշտ չէ, որ հարմար է և հարմար չէ բոլորի համար: Ես խորհուրդ եմ տալիս օգտագործել PostfixAdmin-ը, այժմ մենք կքննարկենք դրա տեղադրումը և ինտեգրումը iRedMail-ի հետ: Մենք սկսում ենք տեղադրումը.
# apt install postfixadmin
Մենք համաձայնում ենք և գաղտնաբառ ենք ստեղծում ծրագրի համակարգի տվյալների բազայի համար:
PostfixAdmin-ի տեղադրում
PostfixAdmin-ի տեղադրում
Մենք համանման հղում ենք անում PHPMyAdmin-ի տեղադրման հետ:
# ln -s /usr/share/postfixadmin /var/www/html
Մենք գրացուցակի սեփականատեր ենք դարձնում այն օգտվողին, ում անունից գործարկվել է վեբ սերվերը: Մեր դեպքում NGINX-ը գործարկվում է որպես www-data օգտատեր:
# chown -R www-data /usr/share/postfixadmin
Այժմ մենք պետք է խմբագրենք PostfixAdmin կոնֆիգուրացիայի ֆայլը և ավելացնենք տեղեկատվություն տվյալների բազայի մասին, որն օգտագործում է iRedAdmin-ը: Լռելյայնորեն այս տվյալների բազան կոչվում է vmail: Եթե դուք գնում եք PHPMyAdmin, կարող եք տեսնել այն այնտեղ: Եվ այսպես, որպեսզի PostfixAdmin-ը փոփոխություններ կատարի տվյալների բազայում, մենք դա նշանակում ենք PostfixAdmin կոնֆիգուրացիայով։
# nano /etc/postfixadmin/config.inc.php
Գտեք տողերը.
$CONF["database_type"] = $dbtype;
$CONF ["database_host"] = $dbserver;
$CONF ["database_user"] = $dbuser;
$CONF ["database_password"] = $dbpass;
$CONF ["database_name"] = $dbname;
Եվ հիշեք.
$CONF["database_type"] = "mysqli"; # Տվյալների բազայի տեսակը
$CONF["database_host"] = "localhost"; # Տվյալների բազայի սերվերի հոսթ
$CONF["database_user"] = "admin"; # Մուտք գործեք vmail տվյալների բազա գրելու հասանելիությամբ: Դուք կարող եք օգտագործել նախկինում ստեղծված ադմինիստրատորը
$CONF["database_password"] = "գաղտնաբառ"; # Վերևում նշված օգտատիրոջ գաղտնաբառը
$CONF["database_name"] = "vmail"; # iRedMail տվյալների բազայի անունը
Տվյալների բազայի տվյալների մուտքագրում
Եթե նախատեսում եք օգտագործել SOGo վեբ փոստի հաճախորդը, ապա ձեզ հարկավոր է ևս մեկ լրացուցիչ քայլ կատարել, այն է՝ փոխել PostfixAdmin կոդավորումը պարբերությունում: $CONF [«գաղտնագրել»]հետ «md5crypt»վրա «աղավնանոց:SHA512-CRYPT». Եթե դուք դա չեք անում, ապա երբ փորձեք SOGo-ում լիազորել PostfixAdmin-ում ստեղծված օգտատիրոջ կողմից, դուք սխալ մուտքի կամ գաղտնաբառի սխալ կստանաք:
Կոդավորման տեսակը փոխելը
Այժմ, որպեսզի հաջողությամբ ավարտեք տեղադրումը և սխալներ չստանաք, դուք պետք է հարցում կատարեք տվյալների բազայում: Հարմար է դա անել PHPMyAdmin-ի միջոցով։ Ընտրեք vmail տվյալների բազան և անցեք SQL ներդիր: Պատուհանում մուտքագրեք.
DROP INDEX տիրույթը փոստարկղում;
DROP INDEX տիրույթը կեղծանունով;
ՓՈՓՈԽԵԼ ԱՂՅՈՒՍԱԿԻ կեղծանունը ԱՎԵԼԱՑՆԵԼ ՍՅՈՒՆԸ «goto» տեքստը NOT NULL;
Տվյալների բազայի հարցում
Եվ սեղմեք «Առաջ»: Այժմ մենք պատրաստ ենք, կարող եք գնալ PostfixAdmin վեբ ինտերֆեյս և ավարտել տեղադրումը: Դա անելու համար զննարկիչում անհրաժեշտ է մուտքագրել. https://domain/postfixadmin/setup.php.
Պետք է հայտնվի հետևյալը.
PostfixAdmin-ի տեղադրում
Եթե ամեն ինչ արվում է հրահանգների համաձայն, ապա սխալներ չպետք է լինեն: Եթե դեռ կան, ուրեմն դավաճանում են, որ վերացնեն, հակառակ դեպքում համակարգը քեզ չի թողնի շարունակես։ Սահմանեք տեղադրման գաղտնաբառը և սեղմեք « Ստեղծեք գաղտնաբառի հեշՀամակարգը կստեղծի գաղտնաբառի հեշ, որը պետք է տեղադրվի պարամետրի մեջ $CONF["setup_password"].
Ավարտելով PostfixAdmin-ի տեղադրումը
Կազմաձևման ֆայլի կարգավորումների փոփոխություն
Այժմ մենք մուտքագրում ենք հենց նոր ստեղծած գաղտնաբառը և ստեղծում PostfixAdmin ադմինիստրատորը։ Ավելի լավ է չստեղծել ադմինիստրատոր՝ փոստմաստեր մուտքով, քանի որ կարող են խնդիրներ առաջանալ iRedAdmin կառավարման վահանակ մուտք գործելու հետ:
PostfixAdmin ադմինիստրատորի ստեղծում
Ամեն ինչ, ադմինը ստեղծված է։ Դուք կարող եք մուտք գործել:
Խնդրում ենք նկատի ունենալ, որ ավելի լավ է վերանվանել կամ ջնջել setup.php ֆայլը postfixadmin գրացուցակում անվտանգության տեսանկյունից:
Գնացինք: https://domain/postfixadmin/և մուտքագրեք նոր ստեղծված հավատարմագրերը: PostfixAdmin-ում, ինչպես նաև iRedAdmin-ում ռուսերենը հասանելի է: Այն կարող է ընտրվել թույլտվության ժամանակ:
Մենք փորձում ենք ստեղծել օգտվողի փոստարկղ:
Միացնել/անջատել iRedMail մոդուլները
iRedMail մոդուլները կառավարվում են iRedAPD-ի կողմից: Այն ունի կազմաձևման ֆայլ, որը պարունակում է աշխատանքային մոդուլներ: Եթե ձեզ որոշակի մոդուլ պետք չէ, կարող եք հեռացնել այն կազմաձևման ֆայլից և այն կդադարի աշխատել: Մենք անում ենք:
# nano /opt/iredapd/settings.py
Գտեք գիծը պլագիններ«Եվ հեռացրեք այն բաղադրիչները, որոնք ձեզ պետք չեն դրանից: Ես կհեռացնեմ բաղադրիչը «գորշ ցուցակում». Իհարկե, այն բավականին արդյունավետ է պաշտպանում սպամից, բայց անհրաժեշտ տառերը հաճախ չեն հասնում։
Մոխրագույն ցուցակը (մոխրագույն ցուցակ) սպամից պաշտպանվելու ավտոմատ տեխնոլոգիա է, որը հիմնված է ուղարկողի սերվերի վարքագծի վերլուծության վրա: Երբ «մոխրագույն ցուցակը» միացված է, սերվերն առաջին անգամ հրաժարվում է անհայտ հասցեից նամակ ընդունել՝ հաղորդելով ժամանակավոր սխալի մասին: Այս դեպքում, ուղարկող սերվերը պետք է նորից փորձի ուղարկել ավելի ուշ: Սպամերները սովորաբար դա չեն անում: Եթե նամակը նորից ուղարկվի, ապա այն ավելացվում է ցուցակում 30 օրով և փոստն արդեն փոխանակվում է առաջին անգամից։ Օգտագործեք այս մոդուլը, կամ ինքներդ չորոշեք:
Փոստի մոդուլների միացում/անջատում
Փոփոխություններ կատարելուց հետո դուք պետք է վերագործարկեք: iRedAPD.
# ծառայություն iredapd-ի վերագործարկում
Փոստի սերվերի փորձարկում
Սա ավարտում է iRedMail փոստի սերվերի կարգավորումը: Կարող եք անցնել վերջնական փուլ՝ թեստավորում։ Եկեք ստեղծենք երկու փոստարկղ: Մեկը iRedAdmin-ի միջոցով ստուգելու համար, երկրորդը PostfixAdmin-ի միջոցով և նամակ ուղարկեք մի փոստարկղից մյուսը և հակառակը: Ստեղծեք փոստարկղ iRedAdmin-ում [էլփոստը պաշտպանված է] domain.ru. PostfixAdmin-ում - [էլփոստը պաշտպանված է] domain.ru
Օգտագործողի ստեղծում iRedAdmin-ում
Օգտագործողի ստեղծում PostfixAdmin-ում
Ստուգեք, որ օգտվողները ստեղծվել են:
Եթե ուշադրություն դարձնեք PostfixAdmin փոստարկղերի ցանկում «To» սյունակին, ապա կարող եք տեսնել iRedAdmin-ում և PostfixAdmin-ում ստեղծված փոստարկղերի տարբերությունը: iRedAdmin-ում ստեղծված փոստարկղերը նշված են որպես « միայն առաջ", և PostfixAdmin-ում ստեղծվածները որպես -" ՓոստարկղՍկզբում երկար ժամանակ ես չէի կարողանում հասկանալ, թե ինչու է դա տեղի ունենում և որն է դրանց տարբերությունը, և վերջապես ես նկատեցի մի բան. փոստարկղերը iRedAdmin-ում ստեղծվում են առանց այլանունների, իսկ PostfixAdmin-ում փոստարկղերը՝ իր մականունով:
Եվ եթե այս անունները ջնջվեն, ապա փոստարկղերը կցուցադրվեն որպես iRedAdmin-ում ստեղծված: միայն առաջ".
Փոխանունների հեռացում
Փոխանունները հեռացվել են: Ստուգեք PostfixAdmin-ը:
Ինչպես տեսնում եք, բոլոր տուփերը դարձել են «Միայն առաջ»։ Նույն կերպ, եթե iRedAdmin-ում ստեղծված փոստարկղում ձեզ համար անուն ստեղծեք, այն կդառնա «Փոստարկղ»։ Սկզբունքորեն, դա չի ազդում փոստի աշխատանքի վրա: Միակ բանն այն է, որ PostfixAdmin-ում ստեղծված փոստարկղի վրա դուք չեք կարողանա կեղծանուն ստեղծել: Այլանուն ստեղծելու փոխարեն, դուք պետք է խմբագրեք գոյություն ունեցողը: Եթե խոսենք այլանունների մասին, ապա iRedMail-ի նոր տարբերակում դուք պետք է փոփոխություն կատարեք Postfix քարտերից մեկում, որը պատասխանատու է կեղծանունների համար: Եվ եթե դուք դա չանեք, ապա ստեղծված կեղծանունները չեն աշխատի: Դրա համար անհրաժեշտ է ֆայլում /etc/postfix/mysql/virtual_alias_maps.cfուղղել:
Մենք անում ենք:
# nano /etc/postfix/mysql/virtual_alias_maps.cf
Եվ մենք դա ուղղում ենք:
Փոխանունների տեղադրում
Վերագործարկեք Postfix-ը.
# ծառայության հետֆիքսման վերագործարկում
Դրանից հետո ամեն ինչ պետք է աշխատի։
Եվ այսպես, եկեք սկսենք ստուգել փոստը: Տուփի մեջ օգտվող 1մենք կանցնենք Roundcube-ի միջով և կներս մտնենք տուփի մեջ օգտվող 2- SOGo-ի միջոցով և նամակ ուղարկեք փոստարկղից օգտվող 1վրա օգտվող 2և ետ.
Նամակ ուղարկելով Roundcube-ով
SOGo-ում էլփոստի ստացում
Նամակ ուղարկելով SOGo-ին
Էլփոստի ստացում Roundcube-ում
Ամեն ինչ աշխատում է առանց խնդիրների։ Նամակի առաքումը տևում է երկուից հինգ վայրկյան: Նույն կերպ նամակները հիանալի կերպով առաքվում են Yandex և mail.ru սերվերներին (ստուգված):
Հիմա եկեք ստուգենք կեղծանունները: Եկեք ստեղծենք տուփ օգտվող 3և փոստարկղից կեղծանուն պատրաստեք օգտվող 1տուփի վրա օգտվող 2. Եվ տուփից նամակ ուղարկիր օգտվող 3տուփի վրա օգտվող 1. Այս դեպքում նամակը պետք է գա տուփ օգտվող 2.
Ստեղծեք կեղծանուն
Նամակ ուղարկել user3-ի փոստարկղից user1-ի փոստարկղ
User2-ի փոստարկղում նամակ ստանալը
Փոխանունների աշխատանքի դեպքում նույնպես ամեն ինչ կարգին է։
Եկեք փորձարկենք փոստային սերվերի աշխատանքը տեղական փոստային հաճախորդի միջոցով: Օրինակ, հաշվի առեք Mozilla Thunderbird-ը: Եկեք ստեղծենք ևս երկու օգտվող. հաճախորդ 1և հաճախորդ 2. Մենք մի փոստարկղը կմիացնենք IMAP-ի, մյուսը՝ POP3-ի միջոցով և նամակ կուղարկենք մի փոստարկղից մյուսը:
Միացում IMAP-ի միջոցով
POP3 միացում
Հաճախորդ 1-ից նամակ ենք ուղարկում Հաճախորդ 2-ին:
Առաքում հաճախորդից 1
Ստանալ հաճախորդի կողմից 2
Եվ հակառակ հերթականությամբ:
Ուղարկում է հաճախորդից 2
Ստացեք հաճախորդ 1-ում
Ամեն ինչ աշխատում է։
Եթե դուք գնում եք. https://domain/netdata, ապա կարող եք դիտարկել համակարգի վիճակի գրաֆիկները։
Եզրակացություն
Սա ավարտում է iRedMail փոստի համակարգի տեղադրումը, կազմաձևումը և փորձարկումը: Արդյունքում մենք ստացանք լրիվ անվճար փոստի սերվեր՝ վավեր SSL վկայականով, երկու տարբեր վեբ վրա հիմնված փոստի հաճախորդների, երկու կառավարման վահանակների, ինչպես նաև փոստի մեջ ներկառուցված հակասպամի և հակավիրուսի միջոցով: Ցանկության դեպքում, վեբ փոստի հաճախորդների փոխարեն, կարող եք օգտագործել տեղական փոստի սպասառուներ, ինչպիսիք են Microsoft Outlook-ը կամ Mozilla Thunderbird-ը: Եթե դուք չեք նախատեսում օգտագործել վեբ փոստի հաճախորդներ, ապա չեք կարող դրանք ընդհանրապես տեղադրել, որպեսզի չծանրաբեռնեք սերվերը կամ տեղադրեք մի բան, որն ավելի շատ է ձեզ դուր գալիս: Ինձ անձամբ ավելի շատ դուր է գալիս SOGo-ն, քանի որ դրա ինտերֆեյսը օպտիմիզացված է բջջային սարքերի համար, ինչը շատ հարմար է դարձնում սմարթֆոնից էլփոստ դիտելը: Նույնը վերաբերում է NetData-ին և iRedAdmin-ին, եթե չեք նախատեսում օգտագործել այն, ավելի լավ է չտեղադրեք: Փոստի այս համակարգը ռեսուրսների վրա այնքան էլ պահանջկոտ չէ: Այս ամենը աշխատում է VPS սերվերի վրա՝ 1024 ՄԲ օպերատիվ հիշողությամբ և մեկ վիրտուալ պրոցեսորով։ Եթե հարցեր ունեք այս փոստի համակարգի վերաբերյալ, գրեք մեկնաբանություններում:
P.S. Այս ապրանքի փորձարկման ժամանակ 1 ԳԲ օպերացիոն հիշողությամբ տարբեր օպերացիոն համակարգերի վրա (Ubuntu, Debian, CentOS), պարզվեց, որ 1 ԳԲ-ը բավարար չէ ClamAV-ի աշխատանքի համար։ Գրեթե բոլոր դեպքերում 1 ԳԲ հիշողություն օգտագործելիս հակավիրուսը վկայակոչել է տվյալների բազայի սխալը։ Միևնույն ժամանակ, Debian և Ubuntu օպերացիոն համակարգերում հակավիրուսը պարզապես չի սկանավորել սերվերով անցնող փոստը, հակառակ դեպքում ամեն ինչ լավ էր աշխատում։ CentOS-ում իրավիճակը մի փոքր այլ էր: Clamd ծառայությունն ամբողջությամբ անջատեց համակարգը՝ այդպիսով անհնարին դարձնելով սերվերի նորմալ աշխատանքը: Երբ փորձում էին մուտք գործել վեբ ինտերֆեյսներ, NGINX-ը պարբերաբար տալիս էր 502 և 504 սխալներ։ Նամակներ են ուղարկվել նաև ժամանակի ընթացքում: Միևնույն ժամանակ, եթե ավելացնեք RAM մինչև 2 ԳԲ, ապա բոլոր դեպքերում հակավիրուսային և ընդհանուր առմամբ սերվերի շահագործման հետ կապված խնդիրներ չեն եղել: ClamAV-ը սկանավորել է փոստի սերվերով անցնող փոստը և դրա մասին գրել տեղեկամատյաններում: Երբ փորձում էին վիրուս ուղարկել հավելվածում, ուղարկումն արգելափակվել էր: Հիշողության սպառումը մոտավորապես 1,2 - 1,7 ԳԲ էր:
NGINX-ը կարող է օգտագործվել ոչ միայն որպես վեբ սերվեր կամ http-proxy, այլ նաև SMTP, IMAP, POP3 արձանագրությունների միջոցով փոստի պրոքսիավորման համար: Սա կստեղծի.
- Մեկ մուտքի կետ՝ ընդլայնելի փոստային համակարգի համար:
- Բեռնվածության հավասարակշռում բոլոր փոստի սերվերների միջև:
Այս հոդվածը տեղադրվում է Linux օպերացիոն համակարգում: Որպես փոստային ծառայություն, որին ուղարկվում են հարցումներ, դուք կարող եք օգտագործել postfix, exim, dovecot, exchange, iredmail assembly և այլն:
Գործողության սկզբունքը
NGINX-ն ընդունում է հարցումները և վավերացնում է վեբ սերվերին: Կախված մուտքի և գաղտնաբառի ստուգման արդյունքից, վստահված անձը կվերադարձնի պատասխան մի քանի վերնագրերով:
Հաջողության դեպքում.
Այսպիսով, մենք որոշում ենք փոստային սերվերի սերվերը և նավահանգիստը վավերացման հիման վրա: Սա շատ հնարավորություններ է տալիս ծրագրավորման լեզուների համապատասխան իմացությամբ։
Անհաջողության դեպքում.
Կախված նույնականացման արդյունքից և վերնագրից, հաճախորդը վերահղվում է մեզ անհրաժեշտ փոստային սերվերին:
Սերվերի պատրաստում
Եկեք որոշ փոփոխություններ կատարենք սերվերի անվտանգության կարգավորումներում:
SELinux
Անջատեք SELinux-ը, եթե օգտագործում եք CentOS կամ եթե օգտագործում եք այս անվտանգության համակարգը Ubuntu-ում.
vi /etc/selinux/config
SELINUX=անջատված է
Firewall
Եթե մենք օգտագործում ենք firewalld(կանխադրված CentOS-ում):
firewall-cmd --մշտական --add-port=25/tcp --add-port=110/tcp --add-port=143/tcp
firewall-cmd --վերբեռնել
Եթե մենք օգտագործում ենք iptables(կանխադրված Ubuntu-ում):
iptables -A INPUT -p tcp --dport 25 -j ԸՆԴՈՒՆԵԼ
iptables -A INPUT -p tcp --dport 110 -j ԸՆԴՈՒՆԵԼ
iptables -A INPUT -p tcp --dport 143 -j ԸՆԴՈՒՆԵԼ
apt-get install iptables-persistent
iptables-save > /etc/iptables/rules.v4
* այս օրինակում մենք թույլատրել ենք SMTP (25), POP3 (110), IMAP (143):
NGINX-ի տեղադրում
Կախված օպերացիոն համակարգից, NGINX-ի տեղադրումը մի փոքր տարբերվում է:
կամ Linux centos:
այմ տեղադրել nginx
կամ Linux ubuntu:
apt տեղադրել nginx
Մենք թույլ ենք տալիս ծառայության ավտոմատ մեկնարկը և այն սկսում ենք.
systemctl միացնել nginx-ը
systemctl start nginx
Եթե NGINX-ն արդեն տեղադրված է համակարգում, ստուգեք, թե որ մոդուլներով է այն աշխատում.
Մենք կստանանք ընտրանքների ցանկ, որոնցով կառուցված է վեբ սերվերը, որոնց թվում մենք պետք է տեսնենք ---փոստով. Եթե անհրաժեշտ մոդուլը գոյություն չունի, դուք պետք է թարմացնեք nginx-ը
NGINX-ի կարգավորում
Բացեք nginx կազմաձևման ֆայլը և ավելացրեք տարբերակը փոստ:
vi /etc/nginx/nginx.conf
փոստ (
auth_http localhost:80/auth.php;
Սերվեր (
լսել 25;
արձանագրություն smtp;
smtp_auth մուտք պարզ cram-md5;
}
Սերվեր (
լսել 110;
արձանագրություն pop3;
}
Սերվեր (
լսել 143;
արձանագրության քարտեզ;
}
}
* որտեղ:
- սերվերի_անուն— փոստի սերվերի անունը, որը կցուցադրվի SMTP ողջույնի ժամանակ:
- auth_http— վեբ սերվեր և URL նույնականացման հարցում:
- proxy_pass_error_message— թույլ է տալիս կամ մերժում է հաղորդագրության ցուցադրումը անհաջող նույնականացման դեպքում:
- լսել— նավահանգիստ, որի վրա լսվում են հարցումները:
- արձանագրությունհավելվածի արձանագրությունն է, որի համար լսում է համապատասխան պորտը:
- smtp_auth— SMTP-ի համար նույնականացման մատչելի մեթոդներ:
- pop3_auth— POP3-ի նույնականացման մատչելի մեթոդներ:
http - սերվերի բաժնում ավելացրեք.
Սերվեր (
լսել 80 default_server;
լսել [::]:80 default_server;
...
Գտնվելու վայրը ~ \.php$ (
սահմանել $root_path /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
ներառել fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
...
Վերագործարկեք nginx սերվերը.
systemctl վերագործարկեք nginx-ը
PHP-ի տեղադրում և կարգավորում
PHP-ի միջոցով նույնականացում կատարելու համար համակարգում պետք է տեղադրվեն հետևյալ փաթեթները.
Եթե CentOS:
yum տեղադրել php php-fpm
Եթե ubuntu:
apt-get տեղադրել php php-fpm
Սկսեք PHP-FPM.
systemctl միացնել php-fpm
systemctl սկսել php-fpm
Նույնականացում
Մուտքն ու գաղտնաբառը ստուգվում են սկրիպտով, որի ուղին սահմանվում է auth_http տարբերակով։ Մեր օրինակում սա PHP սկրիպտ է:
Մուտքի և գաղտնաբառի հաստատման սցենարի պաշտոնական ձևանմուշի օրինակ.
vi /usr/share/nginx/html/auth.php
* այս սկրիպտը ընդունում է ցանկացած մուտքի և գաղտնաբառ և վերահղում է հարցումները սերվերներին 192.168.1.22 և 192.168.1.33 . Նույնականացման ալգորիթմը սահմանելու համար մենք խմբագրում ենք 61 - 64 տողերը: 73 - 77 տողերը պատասխանատու են այն սերվերները վերադարձնելու համար, որոնց վերահղումն ընթացքի մեջ է, այս օրինակում, եթե մուտքը սկսվում է նիշերով։ «ա», «գ», «զ», «գ»,ապա վերահղումը կլինի դեպի սերվեր mailhost01, հակառակ դեպքում, վրա mailhost02. Սերվերների անունների քարտեզագրումը IP հասցեներին կարող է սահմանվել 31, 32 տողերում, հակառակ դեպքում զանգը կկատարվի տիրույթի անունով:
Փոստի սերվերի կարգավորում
NGINX վստահված անձի և փոստային սերվերի միջև տվյալների փոխանակումը պարզ է: Բացառությանը անհրաժեշտ է ավելացնել նույնականացման հնարավորությունը PLAIN մեխանիզմով։ Օրինակ, աղավնանոցը կարգավորելու համար կատարեք հետևյալը.
vi /etc/dovecot/conf.d/10-auth.conf
Ավելացնել տողեր.
հեռավոր 192.168.1.11 (
disable_plaintext_auth = ոչ
}
* այս օրինակում մենք թույլ տվեցինք սերվերից նույնականացման PLAIN հարցումներ 192.168.1.11 .
Մենք նաև ստուգում ենք.
* եթե sslնշանակություն կունենա պահանջվում է, ստուգումը չի աշխատի, քանի որ պարզվում է, որ մի կողմից սերվերը թույլ է տալիս հարցումները պարզ, բայց պահանջում է ssl կոդավորում:
Վերագործարկեք Dovecot ծառայությունը.
systemctl վերագործարկել dovecot
Հաճախորդի կարգավորում
Դուք կարող եք շարունակել ստուգել մեր վստահված անձի կարգավորումները: Դա անելու համար հաճախորդի կարգավորումներում նշեք nginx սերվերի հասցեն կամ անունը որպես IMAP/POP2/SMTP, օրինակ.
* այս օրինակում փոստային հաճախորդը կազմաձևված է սերվերին միանալու համար 192.168.1.11 բաց նավահանգիստներով 143 (IMAP) և 25 (SMTP):
Կոդավորումը
Այժմ եկեք ստեղծենք SSL կապ: Nginx-ը պետք է կառուցվի մոդուլով mail_ssl_module- ստուգեք հրամանով.
Պահանջվող մոդուլի բացակայության դեպքում մենք վերակառուցում ենք nginx-ը:
Մեր կազմաձևման ֆայլը խմբագրելուց հետո.
vi /etc/nginx/nginx.conf
փոստ (
server_name mail.domain.local;
auth_http localhost/auth.php;
proxy_pass_error_message-ը միացված է;
SSL միացված;
ssl_certificate /etc/ssl/nginx/public.crt;
ssl_certificate_key /etc/ssl/nginx/private.key;
ssl_ciphers HIGH:!a NULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10 մ;
Սերվեր (
լսել 110;
արձանագրություն pop3;
pop3_auth պարզ apop cram-md5;
}
Սերվեր (
լսել 143;
արձանագրության քարտեզ;
}
Պատճառը՝ SELinux անվտանգության համակարգը գործարկվել է:
Լուծում. անջատել կամ կարգավորել SELinux-ը: