#12: implement Antispam & Antivirus scanning pipeline (Rspamd & ClamAV)
This commit is contained in:
1 parent
4c2e0b9563
commit
54d1ea5810
15 files changed
+825
-5
No files matched your search
@@ -12,9 +12,12 @@ import (
|
||||
"github.com/emersion/go-imap/v2/imapserver"
|
||||
gosmtp "github.com/emersion/go-smtp"
|
||||
|
||||
"lambdamail/protocols/internal/application/port"
|
||||
"lambdamail/protocols/internal/application/usecase"
|
||||
"lambdamail/protocols/internal/infrastructure/clamav"
|
||||
"lambdamail/protocols/internal/infrastructure/diskstorage"
|
||||
"lambdamail/protocols/internal/infrastructure/postgres"
|
||||
"lambdamail/protocols/internal/infrastructure/rspamd"
|
||||
tlsprovider "lambdamail/protocols/internal/infrastructure/tls"
|
||||
imappresentation "lambdamail/protocols/internal/presentation/imap"
|
||||
httppresentation "lambdamail/protocols/internal/presentation/http"
|
||||
@@ -42,6 +45,21 @@ func main() {
|
||||
messages := postgres.NewInboundMessageRepository(pool)
|
||||
useCase := usecase.NewProcessInboundEmailUseCase(mailboxes, blobs, messages)
|
||||
|
||||
clamavAddr := os.Getenv("CLAMAV_ADDR")
|
||||
rspamdURL := os.Getenv("RSPAMD_URL")
|
||||
if clamavAddr != "" || rspamdURL != "" {
|
||||
var scanners []port.ContentScanner
|
||||
if clamavAddr != "" {
|
||||
scanners = append(scanners, clamav.NewClamAVAdapter(clamavAddr))
|
||||
}
|
||||
if rspamdURL != "" {
|
||||
scanners = append(scanners, rspamd.NewRspamdAdapter(rspamdURL))
|
||||
}
|
||||
pipeline := usecase.NewScanningPipeline(scanners...)
|
||||
useCase.SetScanner(pipeline)
|
||||
log.Printf("lambdamail-protocols antispam/antivirus scanner enabled (clamav: %s, rspamd: %s)", clamavAddr, rspamdURL)
|
||||
}
|
||||
|
||||
certProvider, err := tlsprovider.NewLocalFileCertProvider(
|
||||
os.Getenv("PROTOCOLS_CERT_PATH"),
|
||||
os.Getenv("PROTOCOLS_KEY_PATH"),
|
||||
|
||||
Reference in new issue
Block a user