diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7e4f1a02646e1218cccb5bf6e4b82bd858979110..1af03e16f14ce3689726fcfddff7d833470b4ab4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -100,6 +100,7 @@ include:
   - local: .gitlab/ci/qa.gitlab-ci.yml
   - local: .gitlab/ci/reports.gitlab-ci.yml
   - local: .gitlab/ci/rails.gitlab-ci.yml
+  - local: .gitlab/ci/vendored-gems.gitlab-ci.yml
   - local: .gitlab/ci/review.gitlab-ci.yml
   - local: .gitlab/ci/rules.gitlab-ci.yml
   - local: .gitlab/ci/setup.gitlab-ci.yml
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 72c700e9f4a3f83aacf35869debadd6935303ae1..0a59534f2b8ea8885f52a49e2bf77e04c225f350 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -925,6 +925,16 @@
     - <<: *if-merge-request
       changes: [".gitlab/ci/rails.gitlab-ci.yml"]
 
+#######################
+# Vendored gems rules #
+#######################
+
+.vendor:rules:mail-smtp_pool:
+  rules:
+    - <<: *if-merge-request
+      changes: ["vendor/gems/mail-smtp_pool/**/*"]
+    - <<: *if-merge-request-title-run-all-rspec
+
 ##################
 # Releases rules #
 ##################
diff --git a/.gitlab/ci/vendored-gems.gitlab-ci.yml b/.gitlab/ci/vendored-gems.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a39c4307c13e095a9673b6a0eb370e98f2f8bf48
--- /dev/null
+++ b/.gitlab/ci/vendored-gems.gitlab-ci.yml
@@ -0,0 +1,7 @@
+vendor mail-smtp_pool:
+  extends:
+    - .vendor:rules:mail-smtp_pool
+  needs: []
+  trigger:
+    include: vendor/gems/mail-smtp_pool/.gitlab-ci.yml
+    strategy: depend
diff --git a/vendor/gems/mail-smtp_pool/.gitlab-ci.yml b/vendor/gems/mail-smtp_pool/.gitlab-ci.yml
index 0fe39fb306f17febd0e371a4cc0dedf8d8650e28..56eff5b30a74141afb0f1aec03386b3c1163d1a3 100644
--- a/vendor/gems/mail-smtp_pool/.gitlab-ci.yml
+++ b/vendor/gems/mail-smtp_pool/.gitlab-ci.yml
@@ -1,22 +1,29 @@
-.test-template: &test
+workflow:
+  rules:
+    - if: $CI_MERGE_REQUEST_ID
+
+.rspec:
   cache:
+    key: mail-smtp_pool-ruby
     paths:
-      - vendor/ruby
+      - vendor/gems/mail-smtp_pool/vendor/ruby
   before_script:
+    - cd vendor/gems/mail-smtp_pool
     - ruby -v                                   # Print out ruby version for debugging
     - gem install bundler --no-document         # Bundler is not installed with the image
-    - bundle install -j $(nproc) --path vendor  # Install dependencies into ./vendor/ruby
+    - bundle config set --local path 'vendor'   # Install dependencies into ./vendor/ruby
+    - bundle install -j $(nproc)
   script:
-    - bundle exec rspec spec
+    - bundle exec rspec
 
 rspec-2.6:
   image: "ruby:2.6"
-  <<: *test
+  extends: .rspec
 
 rspec-2.7:
   image: "ruby:2.7"
-  <<: *test
+  extends: .rspec
 
 rspec-3.0:
   image: "ruby:3.0"
-  <<: *test
+  extends: .rspec