diff --git a/lib/data/default.nix b/lib/data/default.nix index b20f7f70..bce9b510 100644 --- a/lib/data/default.nix +++ b/lib/data/default.nix @@ -1,5 +1,6 @@ { data.hosts = builtins.fromTOML (builtins.readFile ./hosts.toml); data.services = builtins.fromTOML (builtins.readFile ./services.toml); + data.mail = builtins.fromTOML (builtins.readFile ./mail.toml); data.tsNet = "coelacanth-dragon.ts.net"; } diff --git a/lib/data/mail.toml b/lib/data/mail.toml new file mode 100644 index 00000000..93c7932c --- /dev/null +++ b/lib/data/mail.toml @@ -0,0 +1,10 @@ +extUrl = "mail.pyrox.dev" +extIPs = ["5.161.140.5", "2a01:4ff:f0:98bf:0:0:0:1"] +# internal port is 40k+real mail port +intSMTP = 40587 +intSMTPS = 40465 +intIMAP = 40143 +intIMAPS = 40993 +intManageSieve = 44190 +intHTTPS = 40443 +intHTTP = 40080 diff --git a/systems/x86_64-linux/prefect/default.nix b/systems/x86_64-linux/prefect/default.nix index 0fad2842..4c60bbcc 100644 --- a/systems/x86_64-linux/prefect/default.nix +++ b/systems/x86_64-linux/prefect/default.nix @@ -19,6 +19,7 @@ ./services/fail2ban.nix # ./services/headscale.nix ./services/mailserver + ./services/mailserver/stalwart # ./services/netdata.nix ./services/nginx ./services/prometheus.nix diff --git a/systems/x86_64-linux/prefect/firewall.nix b/systems/x86_64-linux/prefect/firewall.nix index 80e56ae1..f821ff16 100644 --- a/systems/x86_64-linux/prefect/firewall.nix +++ b/systems/x86_64-linux/prefect/firewall.nix @@ -14,10 +14,12 @@ 636 993 4130 + 4190 6900 8000 ]; allowedUDPPorts = [ + 80 636 4367 6900 diff --git a/systems/x86_64-linux/prefect/secrets/secrets.nix b/systems/x86_64-linux/prefect/secrets/secrets.nix index d029961e..b00a8297 100644 --- a/systems/x86_64-linux/prefect/secrets/secrets.nix +++ b/systems/x86_64-linux/prefect/secrets/secrets.nix @@ -32,4 +32,14 @@ in yubi-main yubi-back ]; + "stalwart-secret-rsa.age".publicKeys = [ + prefect + yubi-main + yubi-back + ]; + "stalwart-secret-ed25519.age".publicKeys = [ + prefect + yubi-main + yubi-back + ]; } diff --git a/systems/x86_64-linux/prefect/secrets/stalwart-secret-ed25519.age b/systems/x86_64-linux/prefect/secrets/stalwart-secret-ed25519.age new file mode 100644 index 00000000..196e32c9 --- /dev/null +++ b/systems/x86_64-linux/prefect/secrets/stalwart-secret-ed25519.age @@ -0,0 +1,19 @@ +age-encryption.org/v1 +-> ssh-ed25519 LcWOqQ iqNMs1zctbP+bDdN4c3RGhckhCvrTPJbcTHUQnu88ko +x5T5SxnBpMRgAHbYY1YU0Yy7XVlGRZ2WnM7ICDFmjbE +-> ssh-ed25519 ihSg8g g0enzjgGoNx7kHNuq7lSys3G3MeQeusWuRZ0oIrP0UE +V6mXoy2LFKubv4f1Fwa0Wx15D7OI3FWeBovhDcuGaMQ +-> ssh-rsa fFaiTA +b9TNMiCUmYELGyGF5YzGR6KOA1w6dUteVArMlg1ZPn1HW2W/wrhhAEmTN/hAnEPR +9AFTDJupQ/6aacyIUnQlkXjI7QZeVbKXJ39VHva1rTXCamAKAAjVBdzcLtEbl4Z5 +iZuv6bEDcggZ1/4PmvmMtH5ljkGZWmbRSXwSqn0xF2P9VY4QMVK86WWpobk+St1X +EQqEDiGrPtgwHMCOfL1wb7lZD6t2wwMlRfnTee/5qDWTSDme6QYPsAFmJOpQGCYT +BOQOlZegH/KCl7qai8qBOKwEWTVMbyblihCp4vaVTgpkOiHO6PM1HS4JrXMZJeDr +30m8oeGT7/PoO14tWZvU2jCWGO/M6tiiif5I+cOymFnGCxmHPpuO/+GPOQ+f4bKb +zw5hh6Bqpj9bp6QoTLfzzKnrpSk/n26e89nejha0iLDwP+QQyZZos9vss3B6Fkmu +bZUuifW7eSuI7Y7l4RkuvCOEIJf+vkW7bF0e1BDpd6n5B9Jp/c5ghvWzgoyCyDud +1Xf0UxiFM90AUR8ml3QtclaRewfMr/b69qgR2olwBVrctjC/CSXAJC3bih6LZLdA +nKHWyqWjWfsxCPWZUmFHMcu1ogFVsnlEdr+UoYCN1oXMwZfgxQnkfLFfcLZFW3+a +JeXgm10wb2+DpmltSi7fLgQOB5462VQ+SvnFFwWFRN8 +--- xB0nATcSCPeSRGpbNMeSuUCJ3rxQhruXmqczOcTvMj0 +�EՊ�[�7]COII�IU [1�:?�wfq�;m�+ %9�������d}ՈQ!y �����IVz;`�᭹�33L ;�Z� ���J�kҕW&jS37jv2-iXEX;Q`HsQ(&H>yYrbqu!*E(rB> zjEeAea`ua=@+e3w3vCD5_JvnZ;n$|TgqDWtqe zKO@*Zthg$#s>(OQC9$l`Kd;cd+yG`Lxoe^H2sTW)D+M4~}xs#!!{P>GALk%vcW zMns`!L0OVhSW;1Fq;Yv@S+bc=5?4V+X;ndShOtYOYejZxKzNZ`xpq)cxnEvnRza#q zVqs8LMP*`DS(#UaPo`zMUu9ZIseZDrw_#+FM{a4Uu^CsGn|5WOzi&{kWuQ||p1yNx zuy?(V5V1To{6KYqd_uPN`a@p zPkOR{xw~UXfnlI|iIaa)s#kh$ma}KDzfV+lN>Wm=MM{Wsa;bS*k-14uNvXdXzPq2Pn`N<=X}C$cSx#PZ zxLI0pSf)V%mw~%+xl^G@k)u(tUu0o%R*rEkXu2JUrB1dS(#s8c$TYIes+d`lyRhwfq8O1*FBGE zSLVF_`Z9TCZmDfC?~zvr1U{9k{%FbDFzLiGl`k7M%dN0vaoDhQzjyM)z*U!oA+4ESk1rRGkF&CE4FFV`i|sH=ZxPf?#KB;pQY1UtSas`+Z3T~pZ4<3J>DVt zxxaq7M;l{GL(@6-2VyVw+_R?XYieqHF|RA%#k z6D==waym!<3Q2SPvm>v^TL0hvm#h)fH`%|PbGVRyR!mWnC#Nx6{^HE_>iZ?F?dRP+ zv%>2E;|8)_Ze5{ykB=RBq<~(t{qsvyW}g zsSUeO5Wl^B`uwAh53Q*%bv0!^-Q`nhFtM{x_y14%^;L|nY(2MsU2L^!ZrHu*GIMJ6 z!S+@)&7cpxu4mKc9{FOqW~*(O(*4!3ckF)gzF@OdH8>HprI+AMb&SDcVN;ep8ejp>=uJ>RLS1Z<560hbi~&*9zL<)wx@|~>k5s1KL6KF+a>+0G?QDd zPWSk)3pZxAb>AqoI#9E!*{qsV%}bR>Mq60)=!z-neb+zdZq%Q1Bt@%P<(2+ofkj3f znX@a4HXbugs(*Tpb@Otb=QotBPS53!?hi*dz6=N53aRfJ-jR2clCvxuXJDEva|ZL+o0?ISN~(b#IEZ#75ul(F}kp$ z>|OtPPchR~&YN`P7|OY3M;%zO=yi>%z0@b#+bUPagc_YX1BsG|z!|YF|*iT;T+<*xe_*zE3S*6mGtl?dPk|-!;d( zH6k~cUHji#E9hk|Q?PWhg6{H)KL2`O6R!gk)Rh7@Hss%!z51k~b*)a~f6uzDOAdvL z7)i>eow?|h@;UW8yL{k*zZ+&VK1`Z0du#s0cDZXQlO7x2nR>)(ou_8thF_7D53=W< zm^|r3)lchYt0NMtW2cJGo1)NSmzV2Ql3Ksj@WL~hFDw6ValIA8elS|KOIn2|__e!G z>PBaW^XJ^|$EF$GJM-gE`tf@H_^=J{?;iVBl6Ss$a-)h>2LG;OoLtA|@;5A!xp*VA zg5lYvgTI#fP1`)JMMf#B&t}VE%i!Fp;cf0>K7ER2vG2n*X3u5aTc?>}*O|!__q=~W zrhx5TW0PO}M{Pc^a-F%(>dtXN_VSGrHu)3h+)4Pbs_)1DJ!S_Lu6A`Fy)5IAk$=Mc z`-g|qe_WW*c*-iT>c-`i<)%?RTN59P-rqOv@X_VX9@5TcZ{{_!tWjC0(fW7aB9BeM z2RWxcINfNXf0cpzvEw$sf9?Eox-)NaPJF%V)z%OTv3S>~_c`-p-mTN**`oh*&f#Un zT}z%En*ZeK*Jftk2-jert7)yNOf?m(k;Z-M8E(#|OqJ)gB>qX7cd&%alv^ET?&fn{l=MDpL5;b&bh4YPkqs z8|S(heTnJH#cb2;CUf;>n0MFb&O3Rz>&f3XP5&hEqoNC6OxID^nHKWrOik_F60WJ! z3@!#%3BS^4Jh^Al%ztOMRpu}_D;!8j64^4VZQ@kNg&*c+&ny*Qw9YMj{b~u<*M)48 zEgDv_Fuc%s{&)9_$}|h-Z;D9|6JrhhHvI~Uz20VVAi{k2=l=(fIOMnpY)P~HyXdv$ zl^>a}S@gH@Cvhz*^zU;!7q4TI7OZ2w+y3cn2FZzDUVct{-l+SjK0Z?2r!c4Yl$TXW z_=NAWrc&lShDPzz&%Qcsmvs6Cx9OP+>LLX{wx7#fzBeUQpuctc?Z3IdD$8fTsJLNn zw{O!*4aK`|wthFyh<|t`t+c_^c>R;j9|9BDCv9VR*uV3GZ_n%BeQv*aJ4L-ewEanG ze^z3#BCS5uI^UKUbjCtZg;#|<$1x#^ZVBLy<0Z(1k^s+ zaqH3H>AdxpW$&^Se)qjC^>{lk|Fcl}yDyinP0umZYT0JdQ24}s&7Z4=jF~q%gi4Z} z_nw@UH6gNVx9RSgFYmqNe301xT9J9FLTJn3I|`w;DhUducd8Zyn+v^3oZ`Q;`K!_A z1#@m2p1R~G#kSnUO55O2v-2c|A9e;;;w9fjmbpz>y2^iE;oZ+&qOoi%XHSl@+P|Dj z+((bAe4=|fm+8TW6ScP7(|*5i_n{k1zbl>>PDz=RWno!(&gbyKdB=qrUY`$UmlBuQ zUp_l6qJ(`7r_rRjmsi!4FJh~H-~9aGL5?TZmWgbedTpH-eA41wqHJ`0bc##1b`HFK zsweQhh##}v6?>0!v0Nr|PcuCIKPlbZD=+&(xZ;-W^X$CWf2fVx&3d7|#fQ0bi>57) z#OzQh?e=55)jR4!{A;tCkF#Iwvz@7<@^?mKcEl~C-)kP4_sfV~x|{c5)q6$rSBE}K zy==!cA!lkt>GXzpW1jZMr)#FOO*G>B%O>YoaA1>{n>Apx0%BN zX#*BRH!x3o@Rr-+kh!>go-3 zj~zBgSz4A(Q2Q}6eFx8pwsZ2C_xAOO9Eo+bI2V$?T`^mwNIjPCTkSzH@g+~sZTvJp zBK=5W@!eC)($Wi)l9gAUan(&)eY|ZDMmy?-r<%h4CK6Rt=PB+aJJerfwba-#F zaGkaIkgcpyiHpp|A1@boUy+Vj%BwJvim6+D zTyLGKJ-lgYE^p%U03M&Xha-y+b;0=?80!B zfC`8I=hl^qv+eTf)DT*rpv-P7vGMY>rlg9)GcVVzXe#^L;4FH5`@BvTE5_#9l{cWMyOPsxU8=a|>7=7HkThW5h1rc=+&?>PdG`7WyLji#-yWhSmB)-ypRC$*)+$8xZumkErA5*HfB*Yk0RWE) Bx^@5n literal 0 HcmV?d00001 diff --git a/systems/x86_64-linux/prefect/services/caddy.nix b/systems/x86_64-linux/prefect/services/caddy.nix index eb07bb84..af6b28bc 100644 --- a/systems/x86_64-linux/prefect/services/caddy.nix +++ b/systems/x86_64-linux/prefect/services/caddy.nix @@ -1,7 +1,7 @@ { pkgs, lib, ... }: let pns = lib.py.data.services; - # mail = lib.py.data.mail; + mail = lib.py.data.mail; marvin = "http://${lib.py.data.hosts.marvin.ts.ip4}"; marvinIP = lib.py.data.hosts.marvin.ts.ip4; tsNet = lib.py.data.tsNet; @@ -118,20 +118,6 @@ in ''; }; - # MTA-STS Setup for mailserver - "mta-sts.pyrox.dev" = { - extraConfig = '' - header Content-Type text/plain; charset=utf-8 - respond /.well-known/mta-sts.txt <