diff --git a/src/Entity/Transport.php b/src/Entity/Transport.php
index c1d176c1ba92480e08a8fabc7164184fd276e231..c41e647eee5b00f8bf2311cc55078dd51b125879 100644
--- a/src/Entity/Transport.php
+++ b/src/Entity/Transport.php
@@ -19,7 +19,8 @@ use Drupal\symfony_mailer_lite\TransportInterface;
  *       "edit" = "Drupal\symfony_mailer_lite\Form\TransportForm",
  *       "add" = "Drupal\symfony_mailer_lite\Form\TransportAddForm",
  *       "delete" = "Drupal\Core\Entity\EntityDeleteForm"
- *     }
+ *     },
+ *     "access" = "Drupal\symfony_mailer_lite\TransportAccessControlHandler",
  *   },
  *   admin_permission = "administer symfony_mailer_lite configuration",
  *   entity_keys = {
diff --git a/src/TransportAccessControlHandler.php b/src/TransportAccessControlHandler.php
new file mode 100644
index 0000000000000000000000000000000000000000..a8b32a37517abbddd562cc004502a91dff39562c
--- /dev/null
+++ b/src/TransportAccessControlHandler.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\symfony_mailer_lite;
+
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Entity\EntityAccessControlHandler;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Session\AccountInterface;
+
+class TransportAccessControlHandler extends EntityAccessControlHandler {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
+    $parentAccess = parent::checkAccess($entity, $operation, $account);
+
+    switch ($operation) {
+      case 'delete':
+        return AccessResult::allowedIfHasPermission($account, 'administer symfony_mailer_lite configuration')
+          ->andIf(AccessResult::allowedIf(!$entity->isDefault()))
+          ->andIf($parentAccess);
+    }
+
+    return $parentAccess;
+  }
+
+}
diff --git a/src/TransportListBuilder.php b/src/TransportListBuilder.php
index fc09af6971ea535b6a89711fb8ca456d620ce7df..9058f01e8d9759e8ef248fd6c6e2aa6db40a8910 100644
--- a/src/TransportListBuilder.php
+++ b/src/TransportListBuilder.php
@@ -77,11 +77,8 @@ class TransportListBuilder extends ConfigEntityListBuilder {
   public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
-    // Prevent the default transport being deleted.
-    if ($entity->isDefault()) {
-      unset($operations['delete']);
-    }
-    else {
+    // Add op to set default to all non-default transports.
+    if (!$entity->isDefault()) {
       $operations['default'] = [
         'title' => $this->t('Set as default'),
         'url' => Url::fromRoute('entity.symfony_mailer_lite_transport.set_default', [