Dead-letter queues are system-generated queues used for storing messages that could not be delivered. This can include situations where the destination queue is full or simply does not exist. Storing these messages allows developers to look for common patterns and potential software problems that might be causing the delivery failure.