Skip to content

Commit 609b2a6

Browse files
committed
Merge branch 'release/v1.19.1'
2 parents 61e8cad + eb120a2 commit 609b2a6

File tree

16 files changed

+417
-289
lines changed

16 files changed

+417
-289
lines changed

.github/workflows/build-docker-edge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
id: short-sha
3434

3535
- name: Build and push
36-
uses: docker/build-push-action@v5
36+
uses: docker/build-push-action@v6
3737
with:
3838
context: .
3939
platforms: linux/386,linux/amd64,linux/arm64

.github/workflows/build-docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
version_extractor_regex: 'v(.*)$'
3838

3939
- name: Build and push
40-
uses: docker/build-push-action@v5
40+
uses: docker/build-push-action@v6
4141
with:
4242
context: .
4343
platforms: linux/386,linux/amd64,linux/arm64

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22

33
Notable changes to Mailpit will be documented in this file.
44

5+
## [v1.19.1]
6+
7+
### Feature
8+
- Add optional relay recipient blocklist ([#333](https://github.com/axllent/mailpit/issues/333))
9+
10+
### Chore
11+
- Update Go dependencies
12+
- Equal column widths in About modal
13+
- Bump esbuild to version 0.23.0
14+
- Bump esbuild from 0.21.5 to 0.22.0 ([#326](https://github.com/axllent/mailpit/issues/326))
15+
- Bump docker/build-push-action from 5 to 6 ([#327](https://github.com/axllent/mailpit/issues/327))
16+
17+
518
## [v1.19.0]
619

720
### Feature

cmd/root.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ func initConfigFromEnv() {
275275
config.SMTPRelayConfig.Secret = os.Getenv("MP_SMTP_RELAY_SECRET")
276276
config.SMTPRelayConfig.ReturnPath = os.Getenv("MP_SMTP_RELAY_RETURN_PATH")
277277
config.SMTPRelayConfig.AllowedRecipients = os.Getenv("MP_SMTP_RELAY_ALLOWED_RECIPIENTS")
278+
config.SMTPRelayConfig.BlockedRecipients = os.Getenv("MP_SMTP_RELAY_BLOCKED_RECIPIENTS")
278279

279280
// POP3 server
280281
if len(os.Getenv("MP_POP3_BIND_ADDR")) > 0 {

config/config.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,9 @@ type SMTPRelayConfigStruct struct {
191191
ReturnPath string `yaml:"return-path"` // allow overriding the bounce address
192192
AllowedRecipients string `yaml:"allowed-recipients"` // regex, if set needs to match for mails to be relayed
193193
AllowedRecipientsRegexp *regexp.Regexp // compiled regexp using AllowedRecipients
194+
BlockedRecipients string `yaml:"blocked-recipients"` // regex, if set prevents relating to these addresses
195+
BlockedRecipientsRegexp *regexp.Regexp // compiled regexp using BlockedRecipients
196+
194197
// DEPRECATED 2024/03/12
195198
RecipientAllowlist string `yaml:"recipient-allowlist"`
196199
}
@@ -433,12 +436,12 @@ func VerifyConfig() error {
433436
if SMTPRelayAll {
434437
logger.Log().Warnf("[relay] ignoring smtp-relay-matching when smtp-relay-all is enabled")
435438
} else {
436-
restrictRegexp, err := regexp.Compile(SMTPRelayMatching)
439+
re, err := regexp.Compile(SMTPRelayMatching)
437440
if err != nil {
438441
return fmt.Errorf("[relay] failed to compile smtp-relay-matching regexp: %s", err.Error())
439442
}
440443

441-
SMTPRelayMatchingRegexp = restrictRegexp
444+
SMTPRelayMatchingRegexp = re
442445
logger.Log().Infof("[relay] auto-relaying new messages to recipients matching \"%s\" via %s:%d",
443446
SMTPRelayMatching, SMTPRelayConfig.Host, SMTPRelayConfig.Port)
444447
}
@@ -525,14 +528,23 @@ func validateRelayConfig() error {
525528
logger.Log().Infof("[smtp] enabling message relaying via %s:%d", SMTPRelayConfig.Host, SMTPRelayConfig.Port)
526529

527530
if SMTPRelayConfig.AllowedRecipients != "" {
528-
allowlistRegexp, err := regexp.Compile(SMTPRelayConfig.AllowedRecipients)
531+
re, err := regexp.Compile(SMTPRelayConfig.AllowedRecipients)
529532
if err != nil {
530533
return fmt.Errorf("[smtp] failed to compile relay recipient allowlist regexp: %s", err.Error())
531534
}
532535

533-
SMTPRelayConfig.AllowedRecipientsRegexp = allowlistRegexp
536+
SMTPRelayConfig.AllowedRecipientsRegexp = re
534537
logger.Log().Infof("[smtp] relay recipient allowlist is active with the following regexp: %s", SMTPRelayConfig.AllowedRecipients)
538+
}
539+
540+
if SMTPRelayConfig.BlockedRecipients != "" {
541+
re, err := regexp.Compile(SMTPRelayConfig.BlockedRecipients)
542+
if err != nil {
543+
return fmt.Errorf("[smtp] failed to compile relay recipient blocklist regexp: %s", err.Error())
544+
}
535545

546+
SMTPRelayConfig.BlockedRecipientsRegexp = re
547+
logger.Log().Infof("[smtp] relay recipient blocklist is active with the following regexp: %s", SMTPRelayConfig.BlockedRecipients)
536548
}
537549

538550
return nil

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ require (
2424
github.com/spf13/pflag v1.0.5
2525
github.com/tg123/go-htpasswd v1.2.2
2626
github.com/vanng822/go-premailer v1.21.0
27-
golang.org/x/net v0.26.0
27+
golang.org/x/net v0.27.0
2828
golang.org/x/text v0.16.0
2929
golang.org/x/time v0.5.0
3030
gopkg.in/yaml.v3 v3.0.1
31-
modernc.org/sqlite v1.30.1
31+
modernc.org/sqlite v1.30.2
3232
)
3333

3434
require (
@@ -54,12 +54,12 @@ require (
5454
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
5555
github.com/valyala/bytebufferpool v1.0.0 // indirect
5656
github.com/vanng822/css v1.0.1 // indirect
57-
golang.org/x/crypto v0.24.0 // indirect
57+
golang.org/x/crypto v0.25.0 // indirect
5858
golang.org/x/image v0.18.0 // indirect
59-
golang.org/x/sys v0.21.0 // indirect
59+
golang.org/x/sys v0.22.0 // indirect
6060
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
6161
modernc.org/gc/v3 v3.0.0-20240304020402-f0dba7c97c2b // indirect
62-
modernc.org/libc v1.53.4 // indirect
62+
modernc.org/libc v1.55.1 // indirect
6363
modernc.org/mathutil v1.6.0 // indirect
6464
modernc.org/memory v1.8.0 // indirect
6565
modernc.org/strutil v1.2.0 // indirect

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
126126
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
127127
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
128128
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
129-
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
130-
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
129+
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
130+
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
131131
golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ=
132132
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
133133
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -142,8 +142,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
142142
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
143143
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
144144
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
145-
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
146-
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
145+
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
146+
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
147147
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
148148
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
149149
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -161,8 +161,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
161161
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
162162
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
163163
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
164-
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
165-
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
164+
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
165+
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
166166
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
167167
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
168168
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -195,18 +195,18 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
195195
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
196196
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
197197
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
198-
modernc.org/cc/v4 v4.21.3 h1:2mhBdWKtivdFlLR1ecKXTljPG1mfvbByX7QKztAIJl8=
199-
modernc.org/cc/v4 v4.21.3/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
200-
modernc.org/ccgo/v4 v4.18.2 h1:PUQPShG4HwghpOekNujL0sFavdkRvmxzTbI4rGJ5mg0=
201-
modernc.org/ccgo/v4 v4.18.2/go.mod h1:ao1fAxf9a2KEOL15WY8+yP3wnpaOpP/QuyFOZ9HJolM=
198+
modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ=
199+
modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
200+
modernc.org/ccgo/v4 v4.19.2 h1:lwQZgvboKD0jBwdaeVCTouxhxAyN6iawF3STraAal8Y=
201+
modernc.org/ccgo/v4 v4.19.2/go.mod h1:ysS3mxiMV38XGRTTcgo0DQTeTmAO4oCmJl1nX9VFI3s=
202202
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
203203
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
204204
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
205205
modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
206206
modernc.org/gc/v3 v3.0.0-20240304020402-f0dba7c97c2b h1:BnN1t+pb1cy61zbvSUV7SeI0PwosMhlAEi/vBY4qxp8=
207207
modernc.org/gc/v3 v3.0.0-20240304020402-f0dba7c97c2b/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
208-
modernc.org/libc v1.53.4 h1:YAgFS7tGIFBfqje2UOqiXtIwuDUCF8AUonYw0seup34=
209-
modernc.org/libc v1.53.4/go.mod h1:aGsLofnkcct8lTJnKQnCqJO37ERAXSHamSuWLFoF2Cw=
208+
modernc.org/libc v1.55.1 h1:2K/vMbMDGymj0CO4mcQybYW8SW3czB+u9rlghpMkTrI=
209+
modernc.org/libc v1.55.1/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w=
210210
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
211211
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
212212
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
@@ -215,8 +215,8 @@ modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
215215
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
216216
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
217217
modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
218-
modernc.org/sqlite v1.30.1 h1:YFhPVfu2iIgUf9kuA1CR7iiHdcEEsI2i+yjRYHscyxk=
219-
modernc.org/sqlite v1.30.1/go.mod h1:DUmsiWQDaAvU4abhc/N+djlom/L2o8f7gZ95RCvyoLU=
218+
modernc.org/sqlite v1.30.2 h1:IPVVkhLu5mMVnS1dQgh3h0SAACRWcVk7aoLP9Us3UCk=
219+
modernc.org/sqlite v1.30.2/go.mod h1:DUmsiWQDaAvU4abhc/N+djlom/L2o8f7gZ95RCvyoLU=
220220
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
221221
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
222222
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=

0 commit comments

Comments
 (0)